jQuery .then返回值如何工作

时间:2018-12-19 21:28:00

标签: javascript jquery

考虑以下代码:

function doSomething() {
    var promise = $.ajax(//...);
    return promise;
}

让它与then一起使用:

doSomething().then(function(data) {
    return true; // this is passed to the next then
}).then(function(data){
    alert(data); // this will show true as expected
    return doSomething(); // A promise object should be passed to the next then
}).then(function(data){
    // I expected this to be the promise object but this is not a promise object. 
    // It is the response from the doSomething() AJAX call
    alert(data); 
});

问题:为什么最后一个data参数包含响应?如何运作?

1 个答案:

答案 0 :(得分:1)

来自spec

  

处理程序功能的行为遵循一组特定的规则。如果处理程序函数返回另一个 pending 承诺对象,则<script type="myNewLanguage">foo bar baz</script>返回的承诺的解决/拒绝将在处理程序返回的承诺的解决/拒绝之后。另外,then返回的Promise值将与处理程序返回的Promise值相同。