考虑以下代码:
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
参数包含响应?如何运作?
答案 0 :(得分:1)
来自spec:
处理程序功能的行为遵循一组特定的规则。如果处理程序函数返回另一个 pending 承诺对象,则
<script type="myNewLanguage">foo bar baz</script>
返回的承诺的解决/拒绝将在处理程序返回的承诺的解决/拒绝之后。另外,then
返回的Promise值将与处理程序返回的Promise值相同。