包装在 promise JavaScript 泛型函数中
Wrap in promise JavaScript generic function
我如何用 promise 包装一个可以具有 sync/a-sync 功能的函数?
我调用了如下函数
action[fn](req, res);
in function fn(在下面的例子中)是 运行 里面可以有(我对每个函数都使用动态调用)sync or a-sync 就像下面的例子,
- How its recommended to wrap it in promise .
- How to handle errors if any...
我使用 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 库和 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 将在请求结束事件后解析,然后 res.end,但我建议创建另一个方法来完成响应并使用方法 运行 中的 promise。祝你好运!
我如何用 promise 包装一个可以具有 sync/a-sync 功能的函数?
我调用了如下函数
action[fn](req, res);
in function fn(在下面的例子中)是 运行 里面可以有(我对每个函数都使用动态调用)sync or a-sync 就像下面的例子,
- How its recommended to wrap it in promise .
- How to handle errors if any...
我使用 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 库和 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 将在请求结束事件后解析,然后 res.end,但我建议创建另一个方法来完成响应并使用方法 运行 中的 promise。祝你好运!