现在要将 Bluebird promises 与 Asana Node 库一起使用?
Now to use Bluebird promises with Asana Node library?
我正在使用 Asana Node 库创建一个新项目,其中包含项目中的一系列部分(任务)。我需要以特定顺序(同步)创建这些部分,以便它们以正确的顺序出现在项目中。如果我只获取部分名称数组,然后使用 forEach 将它们添加为任务,它们不会以正确的顺序出现(因为这些是异步调用)。这是一个片段:
var sections = [
'Pre-Production',
'Production',
'Post-Production',
'Audio',
'Motion',
'Final'
];
sections.forEach(buildSection);
我最终不得不将一系列 .then() 调用串在一起,每个部分一个,以便按照正确的顺序构建它们。显然有更好的方法,但我是 promises 和 bluebird 的新手。感谢您的帮助!
请参阅 Bluebird 的 Promise.reduce()
以了解数据来自数组的一系列操作的排序。
假设 buildSection()
returns 完成时的承诺,并将部分名称作为其参数,您可以这样做:
var sections = [ 'Pre-Production', 'Production', 'Post-Production', 'Audio', 'Motion', 'Final' ];
Promise.reduce(sections, function(val, item) {
return buildSection(item);
}, 0).then(function(finalVal) {
// all are done here
});
Bluebird 的 Promise.reduce()
支持累计 value
点赞 Array.prototype.reduce()
。如果不需要,也可以使用 Promise.each()
或 Promise.map()
(并发设置为 1
),具体取决于您可能需要的最终输出类型。
我正在使用 Asana Node 库创建一个新项目,其中包含项目中的一系列部分(任务)。我需要以特定顺序(同步)创建这些部分,以便它们以正确的顺序出现在项目中。如果我只获取部分名称数组,然后使用 forEach 将它们添加为任务,它们不会以正确的顺序出现(因为这些是异步调用)。这是一个片段:
var sections = [ 'Pre-Production', 'Production', 'Post-Production', 'Audio', 'Motion', 'Final' ]; sections.forEach(buildSection);
我最终不得不将一系列 .then() 调用串在一起,每个部分一个,以便按照正确的顺序构建它们。显然有更好的方法,但我是 promises 和 bluebird 的新手。感谢您的帮助!
请参阅 Bluebird 的 Promise.reduce()
以了解数据来自数组的一系列操作的排序。
假设 buildSection()
returns 完成时的承诺,并将部分名称作为其参数,您可以这样做:
var sections = [ 'Pre-Production', 'Production', 'Post-Production', 'Audio', 'Motion', 'Final' ];
Promise.reduce(sections, function(val, item) {
return buildSection(item);
}, 0).then(function(finalVal) {
// all are done here
});
Bluebird 的 Promise.reduce()
支持累计 value
点赞 Array.prototype.reduce()
。如果不需要,也可以使用 Promise.each()
或 Promise.map()
(并发设置为 1
),具体取决于您可能需要的最终输出类型。