提问者:小点点

在promise JavaScript泛型函数中包装[重复]


我如何包装一个函数,其中可以有同步/一同步功能与承诺?

我调用了如下函数

action[fn](req, res);

在函数fn(在下面的例子中)运行时可以像下面的例子一样有内(我对每个函数都使用动态调用)sync或a-sync,

  1. 建议如何将其包装在promise中。
  2. 如何处理错误(如果有)...

我使用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");
    }

共1个答案

匿名用户

例如,我们可以使用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。祝你好运!