我正在努力在Javascript中组织一系列操作作为承诺(而不是异步瀑布),每个承诺都在一个文件中,以便我可以自己测试它。
工作主要.js,但"p1.p1()"很丑!
p1 = require("./test.js");
console.log(p1)
p1.p1().then(function(val) {
console.log(val); // 1
return val + 2;
}).then(function(val) {
console.log(val); // 3
})
test.js,将来我想导入几个{1..X}.js:
exports.p1 = function() { return new Promise(function(resolve, reject) { resolve(1); }); }
在 Node 4.3 中是否有更干净的方法来执行此操作?
如果你对p1.p1()
的唯一问题是重复p1
,并且你想以更短的方式调用它,除了你打算每个文件只有一个承诺之外,那么你可以执行以下操作:
在test.js
:
module.exports = function () {
return new Promise( function (resolve, reject) {
resolve(1)
})
}
在main.js
:
var p1 = require("./test.js")
p1()
.then(function(p1_result) {
console.log("Result of p1: ", p1_result)
})
.then(...)
.catch(function(err) {
// handle errors as you see fit in your case
})
- 请注意,将返回
test.js
中的承诺的函数附加到module.exports
将意味着您只能导出该函数,但您确实明确声明了这是您想要做的。
PS:如果您不必使用Node v4.3,则应考虑使用较新的版本(6.9.x LTS,或7.4.x当前版本)