With Q I can define a new promise with:
var queue = q();
But with Bluebird if I do:
var queue = new Promise();
I get:
TypeError: the promise constructor requires a resolver function
How can I get the same result that I had with Q?
This is a snippet of my code:
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 provided a good answer For the sake of your original question, there are several ways to start a chain with Bluebird.
One of the simplest is calling Promise.resolve()
on nothing:
var queue = Promise.resolve(); //resolve a promise with nothing or cast a value
or
Promise.try(function(...){
return ...//chain here
});
So you can do:
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 () {
// ...
});
Although, personally I'd do something like:
//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
});