gpt4 book ai didi

javascript - 如何创建解析为 thenable 的 javascript promise?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:18 24 4
gpt4 key购买 nike

我正在使用 faye browser client使用 promises,我有一个函数可以在执行异步操作后创建一个 faye 客户端,如下所示:

function fayeClient() {
return doSomethingAsychronous().then(function() {
var faye_client = new Faye.Client('http://localhost/faye');
return faye_client;
});
}

我想这样使用它:

fayeClient().then(function(faye_client) {
// do something with faye_client
});

问题是,faye_client 也是一个thenable,这意味着fayeClient 返回的promise 解析为 的值faye_client '解决'到。但是,我希望 promise 直接解析为 faye_client

我什至无法使用 Promise.resolve(faye_client); 手动将值包装在 promise 中,因为相同的 promise resolution procedure被使用。

我认为这可能表明 faye 滥用了 thenables,因为 faye_client 不代表一个未知的值。

有没有什么方法可以做出一个解析为一个值的 promise ,这个值也是一个 thenable ?

最佳答案

而不是返回 faye_client 直接将其包装在一个对象中。它很丑陋,但它是您获得 A+ promise 的唯一选择:

return {client: faye_client}; // no longer a thenable

一些替代的 promise 实现公开了一个 .then 或 .chain,它们不会递归同化,但老实说我会避免这些。

关于javascript - 如何创建解析为 thenable 的 javascript promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028365/

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