我如何包装一个函数,其中可以有同步/一同步功能与承诺?
我调用了如下函数
action[fn](req, res);
在函数fn(在下面的例子中)运行时可以像下面的例子一样有内(我对每个函数都使用动态调用)sync或a-sync,
我使用nodeJS应用程序
run: function (req, res, filePath) {
var writeStream = fs.createWriteStream(fileRelPath, {flags: 'w'});
req.pipe(writeStream);
req.on("end", function () {
console.log("Finish to update data file")
});
res.end("File " + filePath + " saved successfully");
}
例如,我们可以使用Q libary和defer,如下所示:
run: function (req, res, filePath) {
var d = Q.defer();
var writeStream = fs.createWriteStream(fileRelPath, {flags: 'w'});
req.pipe(writeStream);
req.on("end", function () {
console.log("Finish to update data file");
d.resolve();
});
req.on("error", function (err) {
d.reject(err);
});
return d.promise.then(function(){
res.end("File " + filePath + " saved successfully");
}).catch(function(err){
//handle error
})
}
在这段代码中,promise将在req end事件之后解析,然后是res.end,但是我建议为finish response创建另一个方法,并从方法run使用promise。祝你好运!