jQuery延迟承诺然后

Ara*_*orn 0 javascript jquery

JavaScript承诺的新手,并且很难掌握这个概念.我似乎终于明白了,但似乎无法让它发挥作用.

这是一个简单的尝试:

first = function(){
    var deferred = new $.Deferred();
    console.log("first running")
    return deferred.promise();
}

second = function(){
    console.log("second running..sigh..");
}

$(document).ready(function() {

    first().then(second);

});
Run Code Online (Sandbox Code Playgroud)

第二个没有被召集.

sma*_*sma 5

为了调用第二个函数,您需要解析从第一个函数返回的延迟:

first = function(){
    var deferred = new $.Deferred();
    console.log("first running");
    deferred.resolve();  // <----------resolve the deferred
    return deferred.promise();
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用参数解决它,以便无论它解决了什么,都将作为参数传递给您的第二个函数.这是一个小提示,它为解析添加了一点延迟,因此它模仿异步行为并使用实际数据解析:

http://jsfiddle.net/1k6tLev8/1/