【发布时间】:2016-11-13 14:12:21
【问题描述】:
假设我有一个包含某些承诺的文件,当按顺序执行时,准备一个输入文件input.txt。
// prepareInput.js
var step1 = function() {
var promise = new Promise(function(resolve, reject) {
...
});
return promise;
};
var step2 = function() {
var promise = new Promise(function(resolve, reject) {
...
});
return promise;
};
var step3 = function() {
var promise = new Promise(function(resolve, reject) {
...
});
return promise;
};
step1().then(step2).then(step3);
exports.fileName = "input.txt";
如果我运行node prepareInput.js,step1().then(step2).then(step3) 行将被执行并创建文件。
我怎样才能改变这一点,以便当其他文件试图从这个模块中检索fileName 时,step1().then(step2).then(step3); 在 fileName 暴露之前运行并完成?类似的东西:
// prepareInput.js
...
exports.fileName =
step1().then(step2).then(step3).then(function() {
return "input.txt";
});
// main.js
var prepareInput = require("./prepareInput");
var inputFileName = require(prepareInput.fileName);
Node.js 初学者在这里;如果我的方法完全没有意义,请事先道歉...... :)
【问题讨论】:
-
为什么不
require('./prepareInput').fileName.then(function(inputFileName) {...})? -
我的意思是一旦你的代码被异步效果“感染”了,你就无法摆脱它,所有使用代码的东西都会变成异步的。
-
什么是
first()..? -
@redu:对不起,意思是说“step1”。 Yury:试试你的建议……
标签: javascript node.js promise