CNode

如何确保JS程序执行顺序?

问答
Cchapgaga发布于12 年前最后回复12 年前14 回复21753 浏览0 收藏
function() {
a();
b();
}

有时候a没执行完,b就开始执行了,要的效果是只有等a执行完毕后,b才开始执行,在js中如何作到这一点呢?

查看回复

回复 (14)

L
luoshizheng#1·12 年前

可以给function a 加上回调函数。

T
TossShinHwa#2·12 年前

promise

M
MiguelValentine#3·12 年前
function(){
  a(arguments,function(){
    b();
  });
};
function a(arguments,func){
//你的函数
func();
}
Y
yofine#4·12 年前

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']
});
Z
zensh#5·12 年前

thunks 专处理这个,这里有些 demo:https://github.com/thunks/thunks/tree/master/examples

C
chapgaga#6·12 年前
引用 MiguelValentine``` function(){ a(arguments,function(){ b(); }); }; function a(arguments,func){ //你的函数 func(); }

@MiguelValentine 这个好像解决不了执行顺序问题,因为在func()之前函数体没有执行完毕的时候,func可能已经开始执行了

C
chapgaga#8·12 年前
引用 MiguelValentine@chapgaga 别逗,我这是标准回掉callback

@MiguelValentine 有些函数执行需要较长时间,函数体还没执行完毕,后面的函数就执行了...

A
arover#9·12 年前

可能是你的函数a里面有些操作是异步的,所以a里面的某些操作没完成,function a就返回了。

C
cloudcome#10·12 年前
var howdo = require('howdo');

howdo.task(a).task(b).follow(function(err){
    // a b 都做完了
});
U
usherwong#11·12 年前

Promise 写法:

var Q = require('q'); var def_a = Q. denodeify(a); def_a().then(b());

A
amoa400#13·12 年前

generator

A
alsotang#14·12 年前

用 eventproxy 这个库

参与回复
登录后即可参与回复。登录