同步和异步

1.同步就是代码从上而下依次执行,除了函数或则回调函数
2.异步也有先后之分但是不明显,等js代码先执行同步后再去执行异步的代码.

如何处理同步异步的问题(ES6的Promise)

接上面,看下面的代码

var arr=[];
var mongodb=require('mongodb');
var client=new mongodb.MongoClient('mongodb://localhost:27017');
client.connect((err)=>{
    if(err){
        console.error(err);
    }else{
        console.log('连接成功');
        arr.push('连接数据库成功了');
    }
})
console.log(arr);

运行结果为:
在这里插入图片描述
发现好像与我们的想法十分的不符合,我们应该觉得arr不应该是空数组,但是结果确实这样的
为了解决这个问题,我们的使用由ES6提供的Promise方法来使得它能够解决同步异步问题
当然光靠Promise解决不是那么方便,这边引入几个方法来协助我们来解决同步异步问题

async(一定是放到异步的函数前的)和await(常放在异步结果上). ----并i且他们必须放在一起使用

var arr=[];
var mongodb=require('mongodb');
var client=new mongodb.MongoClient('mongodb://localhost:27017');
function test(){
    return new Promise((res,error)=>{
        client.connect((err)=>{
            if(err){
                console.error(err);
                error();
            }else{
                console.log('连接成功');
                arr.push('连接数据库成功了');
                res(arr);
            }
        })
    })
}
async function text(){
    await test();
    console.log(arr);
}
text();

运行结果:
在这里插入图片描述

这样就可以处理同步和异步的问题

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐