Meg*_*att 2 ajax jquery jquery-deferred
我可以用这种方式声明一个jQuery AJAX调用:
var foo = $.ajax({ ... });
但那实际上会在那时执行请求,那么,对吗?
如何在不首先执行AJAX调用的情况下声明AJAX调用,然后再调用它?就像是:
var foo = $.ajax({ ... });
// some stuff in between
foo.execute();
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑 更多信息:我真正想做的是有一个函数,它根据参数构造一个AJAX请求,将它返回给调用代码,并让调用代码管理它的状态(即能够执行它,中止它,等等.).因此,我不想简单地声明AJAX调用的设置,而是希望获得$ .ajax返回的实际XHR对象,只有能够执行它,中止它等等.
$ .ajax返回promise对象,因此我们可以创建函数:
function prepareAjax(properties) {
var defer = $.Deferred();
var promise = defer.promise();
return $.extend(promise, {
execute: function () {
return $.ajax(properties).then(defer.resolve.bind(defer), defer.reject.bind(defer));
}
});
}
Run Code Online (Sandbox Code Playgroud)
调用此函数,例如:
var xhr = prepareAjax({ method: 'get', url: 'https://localhost:8001' })
Run Code Online (Sandbox Code Playgroud)
将结果写入控制台:
xhr.then(function (result) { console.log(result) });
Run Code Online (Sandbox Code Playgroud)
并执行推迟:
xhr.execute()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |