将 $.when() / $.promise() 与内置 AJAX 的函数一起使用
Using $.when() / $.promise() with functions that have AJAX inside
这个问题
非常困难,我知道$.when()
可以这样使用(使用多个 AJAX 语句)来向您承诺它们何时完成。
http://jsfiddle.net/M93MQ/
$.when(
$.ajax({ url: '/echo/html/', success: function(data) {
alert('request 1 complete')
}
}),
$.ajax({ url: '/echo/html/', success: function(data) {
alert('request 2 complete')
}
})
).then( function () { alert('all complete'); });
但这仅适用于原始$.ajax()
,无论如何,函数调用是否具有相同的功能,而函数调用又具有 ajax(和其他随机逻辑)?
伪代码思想:
// The functions having the AJAX inside them of course
$.when(ajaxFunctionOne, ajaxFunctionTwo).then(function () {
alert('all complete');
});
当然,让函数返回一个 promise 对象。
function ajaxFunctionOne() {
return $.ajax(...)
}
function ajaxFunctionTwo() {
var dfd = $.Deferred();
// on some async condition such as dom ready:
$(dfd.resolve);
return dfd.promise();
}
function ajaxFunctionThree() {
// two ajax, one that depends on another
return $.ajax(...).then(function(){
return $.ajax(...);
});
}
$.when(ajaxFunctionOne(),ajaxFunctionTwo(),ajaxFunctionThree()).done(function(){
alert("all complete")
});
相关文章:
- setTimeout可以与闭包内的函数一起使用吗
- $location.search() 与外部函数一起使用,重置整个$scope.如何避免它
- 将 JSDoc 与匿名对象和该对象的函数一起使用的正确方法
- While循环与jquery中的某些数学函数一起崩溃
- 如何将setTimeout()与slow函数一起使用
- 此JavaScript函数可以单独使用,但不能与其他JavaScript函数一起使用
- delay()函数不能与jquery中的addClass()函数一起使用
- 如何将URL与JQuery.getJSON()函数一起使用
- .wrap()在与resize函数一起使用时多次添加选择器
- 为什么JavaScript闭包不能与预定义的函数一起使用
- Prototype.js 1.7:将collect与显式函数一起使用会返回与内联函数不同的结果,原因是什么
- JS:转义字符串末尾带有反斜杠的字符串,用于与jQuery函数一起使用
- 如何将 yield 与我自己的函数一起使用
- 如何将 ng-show 与控制器中返回 true/false 的函数一起使用
- 为什么我不能将javascript setInterval与外部文件中的函数一起使用
- 将回调函数与原型函数一起使用
- 将延迟语句与 javascript 函数一起使用
- jQuery 不与 JS 搜索函数一起使用
- 如何将setTimeout与立即调用的函数一起正确使用
- 如何让jquery.each函数与动态元素的.on('change')函数一起工作