aut*_*ton 7 javascript ajax jquery promise
我目前正在编写API代码,其中包含多个层,包含$ .ajax()调用.
一个要求是用户必须能够取消任何请求(例如,如果它花费的时间太长).
通常这可以通过简单的方式实现,例如:
var jqXHR = $.ajax(..);
$(mycancelitem).click(function () {
jqXHR.abort();
});
Run Code Online (Sandbox Code Playgroud)
但是我的代码看起来更像是这样的:
function myapicall() {
var jqxhr = $.ajax(…);
var prms = def.then(function (result) {
// modify the result here
return result + 5;
});
return prms;
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是有人调用myapicall()
只获取jQuery.Promise而无法中止它.虽然上面的示例非常简单,但在我的实际代码中,在许多地方有几层链接.
这个问题有方法解决吗?
小智 3
您可以返回一个同时具有 jqXHR 和 Promise 的对象
function myapicall() {
var jqXHR = $.ajax(..);
var promise = jqXHR.then(function (result) {
// modify the result here
return result + 5;
});
return {jqXHR:jqXHR,promise:promise};
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5214 次 |
最近记录: |