在测试node.js promise框架期间。我得到了一个奇怪的结果。 这是一个代码。
var Promise = require('promise');
var fs = require('fs');
var src = '/tmp/myfile.txt';
var des = '/tmp/myfile_promise2.txt';
var fread = Promise.denodeify(fs.readFile);
var fwrite = Promise.denodeify(fs.writeFile);
fread(src)
.then(
function(text){
console.log('Read done');
return fwrite(des,text);
})
.then(console.log('Write done'))
.catch(function(reason){
console.log('Read or Write file error');
console.log(reason);
});
文件已成功写入。但控制台输出如下所示
写完了 完成阅读
我的预期结果是,首先打印“Read done”然后“Write done”。 出了什么问题?
答案 0 :(得分:3)
Thanx @ E_net4 ^ @Joachim Isakkson
用函数包装后,它可以工作。 我需要再次学习承诺创造生命周期。
var Promise = require('promise');
var fs = require('fs');
var src = '/tmp/myfile.txt';
var des = '/tmp2/myfile_promise2.txt';
var fread = Promise.denodeify(fs.readFile);
var fwrite = Promise.denodeify(fs.writeFile);
fread(src)
.then(
function(text){
console.log('Read done');
return fwrite(des,text); // 체이닝을 하려면 return을 해줘야 함.
})
.then(function(){
console.log('Write done');
})
.catch(function(reason){
console.log('Read or Write file error');
console.log(reason);
});