gpt4 book ai didi

javascript - 单个解析器/ promise 的多个生产者

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:03 26 4
gpt4 key购买 nike

在 Q 文档中有这一行:

“您可以将解析器提供给任意数量的生产者,谁先解决了 promise ,谁就赢了。此外,除非您也将 promise 部分也给了生产者,否则没有生产者会观察到他们输了。”

我真的不明白那是什么意思。这是在您手动构建 promise 时使用的吗?有人可以给我举个例子吗?

最佳答案

Is this for when you are constructing a promise by hand?

确切地说,您可以使用 deferred 或 promise 构造函数创建一个 promise,多次调用 resolve 但只有第一次有效。例如:

var p = new Q.Promise(function(resolve){
resolve(1);
resolve(2);
resolve(3);
resolve(4);
resolve(5); // can also pass `resolve` around.
});

p.then(function(result){
// always 1, all other calls had no effect.
});

这让您可以构建有趣的东西,例如,让我们构建一个 race 函数,它返回第一个解决两个 promise 的结果(为简洁起见省略了错误处理):

function race(p1, p2){
return new Promise(function(resolve){
p1.then(resolve);
p2.then(resolve);
});
}

哪个 promise 会先准备好,例如:

race(tryToGetFromFirstAPI(), tryToGetFromSecondAPI()).then(function(result){
// resolves as soon as the "fastest" resolved, with the result
});

关于javascript - 单个解析器/ promise 的多个生产者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296810/

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