gpt4 book ai didi

jquery - 使用 jQuery 中的自定义方法返回 promise

转载 作者:行者123 更新时间:2023-12-01 02:43:55 26 4
gpt4 key购买 nike

我需要返回一个充当 promise 的自定义 js 对象,即,当延迟解决或拒绝时,我可以附加回调或错误回调。我需要在这个对象中使用一些自定义方法,只有当它本身不是“挂起”时才能运行。类似于:

foo = $.Deferred();

foo.a_method = function() {
// do something only if "this" is resolved or rejected
// throw an exception instead
};

return foo.promise();

上面的代码不起作用,返回的promise没有a_method,而只有jQuery默认的promise方法。我现在的想法是:

var myMixin = {
a_method: function() {
// ...
}
};

return $.extend(foo.promise(), myMixin);

该代码按预期工作,但它对于每个人来说并不常见(至少我认为),并且它不是很容易理解。

我想要它的原因是我有一个依赖于一些加入的ajax请求的库($.when($.ajax('foo'), $.ajax('bar'))) 以便更好地执行。所以我做请求,附加一些其他回调并使用“特定于域”的方法返回该链的 promise 。

有更好的方法吗?

最佳答案

Promise 对象与 Deferred 对象不同。在 Deferred 对象上调用 promise() 会创建一个新的 Promise 对象。由于您已将函数添加到 Deferred 对象,因此它们不会出现在 Promise 中。因此,您需要将它们添加到 Promise 对象本身。

在您的 $.extend 调用中,您正是这样做的。不过,正如你所说,语法有点困难。因此,您可以使用上面的简单语法:

foo = $.Deferred().promise(); // store the promise object

foo.a_method = function() { // add the property to the Promise object
// do something only if "this" is resolved or rejected
// throw an exception instead
};

return foo; // return the Promise object

关于jquery - 使用 jQuery 中的自定义方法返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17324166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com