function() { a(); b(); }
有时候a没执行完,b就开始执行了,要的效果是只有等a执行完毕后,b才开始执行,在js中如何作到这一点呢?
可以给function a 加上回调函数。
promise
function(){ a(arguments,function(){ b(); }); }; function a(arguments,func){ //你的函数 func(); }
Async.js
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'] });
thunks 专处理这个,这里有些 demo:https://github.com/thunks/thunks/tree/master/examples
应该问:在node中,该如何做? 反正我大fibjs没这个问题,嘎嘎~~~
@MiguelValentine 这个好像解决不了执行顺序问题,因为在func()之前函数体没有执行完毕的时候,func可能已经开始执行了
@chapgaga 别逗,我这是标准回掉callback
@MiguelValentine 有些函数执行需要较长时间,函数体还没执行完毕,后面的函数就执行了…
可能是你的函数a里面有些操作是异步的,所以a里面的某些操作没完成,function a就返回了。
var howdo = require('howdo'); howdo.task(a).task(b).follow(function(err){ // a b 都做完了 });
Promise 写法:
var Q = require(‘q’); var def_a = Q. denodeify(a); def_a().then(b());
@arover 嗯,如何应对这种情况?
generator
用 eventproxy 这个库