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