1
我使用Bluebird 3启用取消。是取消该工具在下面的用例使用:取消Promise.map中的承诺(如果有人被拒绝)(Bluebird 3)
var resourcesPromise = Promise.map(resourceIds, function(id) {
return loadResource(id);
});
resourcesPromise.catch(function() {
resourcesPromise.cancel();
});`
如果其中的一个资源加载失败,resourcesPromise将被拒绝了,我想停止所有其他资源的加载。但据我所知,取消resourcesPromise不起作用,因为它已被拒绝。
编辑:我目前正在考虑以下的变体:(!我可能已经找到了一个合法使用“于是(解析,拒绝)”反模式)
var resourcesPromise = new Promise(function(resolve, reject) {
var intermediatePromise = Promise.map(resourceIds, function(id) {
return loadResource(id).catch(function(error) {
intermediatePromise.cancel();
reject(error);
});
}).then(resolve, reject);
});
为什么Promise.map不能像那样工作?
我故意平行化资源加载,以使其更快。谢谢你的回答,但这对我不起作用。 – trkjgrdg