如何在两个功能之间同步

use*_*697 3 javascript

我有两个函数,当其他函数(一和二)完成时,我想调用第三个函数。我需要将第一个函数和第二个函数称为异步函数。例如

  var func1 = function( do something..... return arr )
  var func2 = function ( do something ..... return arr2 )

   if ( arr.length > 0  && arr2.length > 0 )
       var func3 = function( do something )
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 最好的方法是什么?

  2. 如何以异步方式调用函数?

jba*_*bey 5

如果你有 jQuery,你可以使用它们的Deferred对象

var func1 = function () {
    var dfd = $.Deferred();

    setTimeout(function () {
        // do your processing
        dfd.resolve(arr1);
    }, 0);

    return dfd.promise();
};
var func2 = function () {
    var dfd = $.Deferred();

    setTimeout(function () {
        // do your processing
        dfd.resolve(arr2);
    }, 0);

    return dfd.promise();
};

$.when(func1(), func2()).then(function (arr1, arr2) {
    if ( arr.length > 0  && arr2.length > 0 ) {
        func3();
    }
});
Run Code Online (Sandbox Code Playgroud)

相关问题: