承诺在几个文件

我正在努力组织Javascript中的一系列操作作为Promises(而不是一个asynchronous的瀑布),每个承诺在一个文件中,以便我可以自行testing。

工作main.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); }); } 

在节点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的promise返回给module.exports将意味着您只能导出这个函数,但是您明确声明了这是您想要执行的操作。

PS:如果不必使用Node v4.3,则应考虑使用更新的版本(6.9.x LTS或7.4.x当前版本)