将库中的方法更改为承诺

Changing methods in libraries to promises

converter.json2csv(MAP.fls, function (error, csv) {
    if (error) {
        return error;
    }

    file_system.writeFile(MAP.output.res, csv, function (error) {
        if (error) {
            return error;
        }
    });
});

我有这段代码..我想知道是否可以对它们使用 promises。我不喜欢,我认为这两个 if 语句没有意义,测试错误..

如果不可能..我没有什么可以做的吗?

如果库有回调接口,您可能无能为力,只能更改其来源。

但是你可以创建使用延迟接口的包装函数,像这样:

// let's create our wrapper module
// json2cvs.js

var Deferred = require("deferred"); // this is just for example;
var converter = require("converter");

module.exports = function(MAP) {
    var dfd = Deferred();        

    converter.json2csv(MAP.fls, function (error, csv) {
        if (error) {
            dfd.reject(error);
        }

        file_system.writeFile(MAP.output.res, csv, function (error) {
            if (error) {
               dfd.reject(error);
            }

            // some actions
            var message = "file saved";

            // success
            dfd.resolve(message);
        });
    });

    return dfd.promise;   
}

然后在另一个模块中你可以简单地要求上面的模块:

var json2csv = require("json2csv");

// use
json2csv(input).done(function(result) {
    console.log(result);
}).fail(function(error) {
    console.log(error);
});

对于这个例子,我使用了这个延迟库 https://www.npmjs.com/package/deferred

但你可以使用任何其他的。