仅在功能完成/完成后返回值

时间:2016-10-21 23:22:56

标签: javascript jquery jquery-deferred

我有一个返回值的jQuery函数/插件,但是在返回之前有一个函数被调用,需要在返回之前完成,否则返回的值不正确。

如果我将返回行放在function1()。done中,它似乎根本不返回任何内容。如果我把它放在外面,它会在function1完成之前返回。

下面不是真正的代码,但我使用这个例子来表达我的问题。希望它有意义。

$(function(){
    function1().done(function(){
        console.log('function1 is done!');
        return "this value needs to be returned only after function1 above is finished";
    });



});

function function1(){
    var dfrd1 = $.Deferred();
    var dfrd2= $.Deferred();

    setTimeout(function(){
        // doing async stuff
        console.log('task 1 in function1 is done!');
        dfrd1.resolve();
    }, 1000);

    setTimeout(function(){
        // doing more async stuff
        console.log('task 2 in function1 is done!');
        dfrd2.resolve();
    }, 750);

    return $.when(dfrd1, dfrd2).done(function(){
        console.log('both tasks in function1 are done');
        // Both asyncs tasks are done
    }).promise();
}

0 个答案:

没有答案