NodeJS异步/等待导出变量

时间:2017-07-26 08:45:56

标签: node.js module promise export

我再次破坏了b *** s ... 我很遗憾不得不回到你们这里,但我发现在线提供的信息非常令人困惑,似乎无法找到适合我的问题的答案。 所以,如果你们中的一个巫师/神的神可以帮助我,我会非常感激。

我正在尝试将一个从承诺中产生的变量导出到另一个模块。 这是我的代码:

主要:

//app.js <--- This is where I need the variable exported.

var sp1 = require('./module');

var somePromise2 = new Promise((resolve, reject) => {
  resolve('Hey! It worked the second time!');
});


async function exec() {
  const message1 = await sp1.msg
  const message2 = await somePromise2
  console.log('Success', message1, message2);
}

exec()

以及承诺的模块:

//module.js

var somePromise1 = new Promise((resolve, reject) => {
  var msg = '';
  resolve(msg = 'Hey! It worked!');
});

module.exports = {
  somePromise1,
}

正如您所看到的somePromise1,实际上与somePromise2相同,但在不同的模块中。事实上,我显然似乎无法获取要导出的msg变量,它会产生一个未定义的(如果我在本地做所有事情:在同一个文件中,它可以无效地工作)。

如果您发现这与现有问题重复,请提前感谢您的帮助并提前抱歉... 我从昨天起就开始寻找答案并移动代码,但似乎没有什么适用......

1 个答案:

答案 0 :(得分:2)

导入时出错,使用承诺时出错:

//app.js <--- This is where I need the variable exported.

var sp1 = require('./module').somePromise1;

var somePromise2 = new Promise((resolve, reject) => {
  resolve('Hey! It worked the second time!');
});


async function exec() {
  const message1 = await sp1; 
  const message2 = await somePromise2;
  console.log('Success', message1, message2);
}

exec()