大佬教程收集整理的这篇文章主要介绍了在Node.js中等待多个回调的惯用方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
do_something(tmp_file_name,function(err) {}); do_something_other(tmp_file_name,function(err) {}); fS.Unlink(tmp_file_name);
但是如果我这样写,第三个调用可以在前两个之前执行
有机会使用该文件。我需要一些方法来保证前两个
调用已经完成(调用它们的回调),然后继续移动而不嵌套
调用(并使它们在实践中同步)。
我想到使用事件发射器在回调和注册一个计数器
作为接收器。计数器将接收完成的事件并计数多少
操作仍在等待。当最后一个完成,它会删除
文件。但有一个竞争条件的风险,我不知道这是
通常这个东西是怎么做的。
Node人如何解决这种问题?
现在我建议看看:
> Promises
@H_301_43@
The Promise object is used for deferred and asynchronous computations.
A Promise represents an operation that hasn’t completed yet,but is
expected in the future.
一个流行的承诺图书馆是bluebird.一个建议看看why promises。
@H_301_43@
You should use promises to turn this:
06000
Into this:
06001
>发电机:例如通过co。
@H_301_43@
Generator based control flow goodness for nodejs and the browser,
using promises,letTing you write non-blocking code in a nice-ish way.
06002
如果我理解正确我想你应该看看非常好的async图书馆。你应该特别看看series.只是从github页面的代码片段的副本:
async.series([ function(callBACk){ // do some stuff ... callBACk(null,'one'); },function(callBACk){ // do some more stuff ... callBACk(null,'two'); },],// optional callBACk function(err,results){ // results is Now equal to ['one','two'] }); // an example using an object instead of an array async.series({ one: function(callBACk){ setTimeout(function(){ callBACk(null,1); },200); },two: function(callBACk){ setTimeout(function(){ callBACk(null,2); },100); },},function(err,results) { // results is Now equals to: {one: 1,two: 2} });
作为加号,这个库也可以在浏览器中运行。
以上是大佬教程为你收集整理的在Node.js中等待多个回调的惯用方法全部内容,希望文章能够帮你解决在Node.js中等待多个回调的惯用方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。