【发布时间】:2019-10-28 17:56:43
【问题描述】:
在given example 中演示了如何从自定义模块中导出变量或函数。如何以类似的方式导出异步函数,然后从 app.js 调用它,例如:
// app.js
var things = require("./someThings");
await things.getSomeThingsAsync();
编辑:
上述链接指向的示例(Stackoverflow 上的答案)包含以下代码:
// someThings.js
(function() {
var someThings = ...;
...
module.exports.getSomeThings = function() {
return someThings();
}
}());
// main.js
var things = require("someThings");
...
doSomething(things.getSomeThings());
假设在模块的封装函数内部存在一个异步函数,您希望将其公开给导入模块的任何人。例如:
(function() {
...
const doSomethingAsync = (time) => {
return new Promise(resolve => {
setTimeout(() => resolve(42), time)
})
}
//const doSomething = async () => {
async function doSomething () {
let answer1 = await doSomethingAsync(3000)
let answer2 = await doSomethingAsync(1000)
return answer1 + answer2
}
...
/*module.exports.doSomething = function() {
return doSomething();
}*/
module.exports.doSomething = async function() {
return doSomething();
}
}());
您将如何以与为someThings 完成的原始答案类似的方式公开doSomething 函数 - 如何以这样的方式更改引用的答案,以便在导出函数时,它可以让您使用await 关键字?然后它将被用作:
// app.js
var things = require("./someThings");
console.log(await things.doSomething());
我尝试了多种方法,但我总是得到:
SyntaxError: await is only valid in async function
【问题讨论】:
标签: node.js asynchronous node-modules