我有一个使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:问题不在于重复呼叫,而是第一次呼叫过早。 (反复调用拒绝/解析是毫无意义的,但这不是问题的根源。) –