异步/等待和希望(NodeJS异步操作)

异步/等待和希望(NodeJS异步操作)
例如,一个场景的时候写的详细页面:首先,在文章的细节的PV的变化,然后读文章的细节,然后咨询发表评论文章和作者的信息,根据文章的细节文章ID。让所有的数据后,使文章详情页。数据库操作是异步的。最直接的思维方式是一级回调函数。问题出了:很难看。如果有更多的图层,会有更多的麻烦,怎么解决呢为了处理异步操作的问题是很难的,是异步的,Q,蓝鸟,Co,不同的治疗方法,每个人都有自己的优点,有兴趣的可以看看,却惊讶的发现,7.6是在Nodejs ES7异步/默认支持等待,与6承诺对象,它的非常。

异步/主要的好处是避免地狱等待回调的问题。

基本概念:

异步意味着这是一个异步函数,等待只能用这个功能

等待表明它在这里等待返回结果的承诺,然后继续。

在等待之后,您应该遵循一个承诺对象(当然,其他返回值并不重要,但这没有意义)…

举一个例子:uff1a

获取返回值:
var睡眠=函数(时间){
返回新的承诺(函数(解析,拒绝){
setTimeout(){()函数(
返回OK
解决(好的);
时间};
})
};
VaR的开始=异步函数(){
让结果=等待睡眠(3000);
console.log(结果); / /接收OK
};
发现错误
var睡眠=函数(时间){
返回新的承诺(函数(解析,拒绝){
setTimeout(){()函数(
模拟错误,返回错误
拒绝(错误的);
时间};
})
};
VaR的开始=异步函数(){
{试
console.log(开始的);
等待睡眠(3000);在这里获取返回错误

以下代码将不会执行
console.log();
} catch(错误){
console.log(ERR); / /来捕获错误`误差`
}
};
在循环中:
VaR的开始=异步函数(){
对于(var i = 1;i < 10;i + +){
console.log(` $ {我}二目前正在等待);
等待睡眠(1000);
}
};
在再循环中,不需要关闭,每个循环将被阻塞。

最重要的场景:(综合使用)
无功showarticle =异步函数(){
等待新的承诺(函数(解析,拒绝){)
PostModel.incPv(,,功能(结果){
解决(结果);
});
})1
等待新的承诺(函数(解析,拒绝){)
PostModel.getPostById(,,功能(文章){
决心(文章);
});
})获取信息
等待新的承诺(函数(解析,拒绝){)
UserModel.getUserById(post.author,功能(作者){
作者=作者;
决心();
})
本文的作者);
var =等待新的承诺(函数(解析,拒绝){)
commentmodel.getcomments(后。_id,功能(评论){
解决(评论);
});
本文);获取所有消息
对于(var i = 0;i < comments.length;i++){
等待新的承诺(函数(解析,拒绝){)
UserModel.getUserById(评论{我}。作者功能(作者){
注释{作者} =作者;
决心();
})
取消息};
}
如果(!后){
req.session.error =文章不存在;
返回res.redirect( /后);
}
res.render('post,{后:发帖,评论:评论});
};
showarticle();
以上是简要介绍异步/等待和希望(NodeJS的异步操作的问题)。我希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部