gpt4 book ai didi

javascript - 如何制作 XHR "promisable"并仍然返回 XHR 对象?

转载 作者:行者123 更新时间:2023-11-30 00:11:25 27 4
gpt4 key购买 nike

我正在尝试 promisify the native XHR ,

现在问题来了,当我使用下面的代码时:

function request(method, url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = resolve;
xhr.onerror = reject;
xhr.send();
});
}

它返回一个 promise 而不是 XHR 对象,

所以我不能以这种方式使用像 xhr.abort() 这样的东西:

xhr = request('GET', 'http://google.com').then(function (e) 
{
// ...code...
}, function (e)
{
// ...code...
});

// When user press the stop button.
xhr.abort();

有没有办法让它返回一个 XHR 对象并仍然保持它的可 promise 性?

编辑:这不是问如何 promise XHR 对象,而是如何让“ promise 的”XHR 对象返回 XHR 对象而不是 Promise。

最佳答案

您需要返回对原始 XHR 甚至 abort() 方法的引用。

例如,返回类似...

return {
promise: promise,
xhr: xhr
};

然后调用代码可以使用request().xhr.abort()

显然,您需要创建这 2 个变量,并在 Promise 回调之外创建 XHR。

如果您真的希望它像您描述的那样工作,您可以在 Promise 对象上设置该属性,但这可能是一个令人困惑的 API。

关于javascript - 如何制作 XHR "promisable"并仍然返回 XHR 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36352617/

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