sho*_*a T 6 javascript node.js promise q bluebird
如何在promise中包含一个可以同步/同步功能的函数?
我打电话给下面的功能
action[fn](req, res);
Run Code Online (Sandbox Code Playgroud)
在函数fn(在下面的例子中)运行可以有内部(我使用动态调用每个函数)同步或 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");
}
Run Code Online (Sandbox Code Playgroud)
例如,我们可以使用 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
})
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,promise 将在 req end 事件之后解析,然后 res.end,但我建议创建另一个方法来完成响应并使用方法运行中的 Promise。祝你好运!
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |