我有一個使Promise按預期工作的問題。我需要做的事情如下:nodejs然後()函數執行之前承諾解決
我從stdout中獲取文件名,將它們分成一行並複製它們。複製操作完成後,我想開始其他操作,這是我的問題。
我在Promise中創建了一個複製函數,如果錯誤我立即拒絕它,如果沒有錯誤,我在循環完成後複製它,但由於某種原因,then()操作完成
var lines = stdout.split(/\r?\n/);
copyUpdatedFiles(lines).then(
function() {
console.log('this one should be executed after copy operation');
}
);
function copyUpdatedFiles(lines) {
return new Promise(function(resolve, reject) {
for (var i = 0; i < linesLength; i++) {
fs.copy(lines[i], target, function(err) {
if (err) {
reject();
}
});
}
resolve();
});
}
請幫助,因爲我明顯缺少的東西。
更具體地說,你不能多次拒絕和解決承諾,所以如果你解決它,一次解決,如果你拒絕,拒絕+中斷或其他方式來做到這一點。 – atrifan
@atrifan:問題不在於重複呼叫,而是第一次呼叫過早。 (反覆調用拒絕/解析是毫無意義的,但這不是問題的根源。) –