同步和异步
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();
运行结果:
这样就可以处理同步和异步的问题