例如,一个场景的时候写的
详细页面:首先,在文章的细节的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的异步操作的问题)。我希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持
网站。