将库中的方法更改为承诺
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
但你可以使用任何其他的。
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
但你可以使用任何其他的。