gpt4 book ai didi

javascript - 像 Q 一样定义空的 Bluebird promise

转载 作者:IT王子 更新时间:2023-10-29 03:12:28 25 4
gpt4 key购买 nike

有了 Q,我可以定义一个新的 promise :

var queue = q();

但如果我这样做的话,使用 Bluebird:

var queue = new Promise();

我得到:

TypeError: the promise constructor requires a resolver function

我怎样才能得到与 Q 相同的结果?

这是我的代码片段:

var queue    = q()
promises = [];
queue = queue.then(function () {
return Main.gitControl.gitAdd(fileObj.filename, updateIndex);
});
// Here more promises are added to queue in the same way used above...
promises.push(queue);
return Promise.all(promises).then(function () {
// ...
});

最佳答案

Florian 提供了一个很好的答案为了你原来的问题,有几种方法可以用 Bluebird 启动链。

最简单的方法之一是什么都不调用 Promise.resolve():

var queue = Promise.resolve(); //resolve a promise with nothing or cast a value

Promise.try(function(...){
return ...//chain here
});

所以你可以这样做:

var queue    = Promise.resolve()
promises = [];
queue = queue.then(function () {
return Main.gitControl.gitAdd(fileObj.filename, updateIndex);
});

// Here more promises are added to queue in the same way used above...
promises.push(queue);
return Promise.all(promises).then(function () {
// ...
});

虽然,我个人会做类似的事情:

//arr is your array of fileObj and updateIndex

Promise.map(arr,function(f){ return Main.gitControl.gitAdd(f.filename,f.updateIndex).
then (function(result){
//results here
});

关于javascript - 像 Q 一样定义空的 Bluebird promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684643/

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