ES6同步异步处理
同步和异步1.同步就是代码从上而下依次执行,除了函数或则回调函数2.异步也有先后之分但是不明显,等js代码先执行同步后再去执行异步的代码.如何处理同步异步的问题(ES6的Promise)接上面,看下面的代码var arr=[];var mongodb=require('mongodb');var client=new mongodb.MongoClient('mongodb://localhost
·
同步和异步
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();
运行结果:
这样就可以处理同步和异步的问题
更多推荐
已为社区贡献5条内容
所有评论(0)