在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();
}
}());
您将如何以类似于doSomething
中原始答案的方式公开someThings
函数-如何在导出函数时以这种方式更改所引用的答案,它可以让您使用await
关键字吗?然后将其用作:
// app.js
var things = require("./someThings");
console.log(await things.doSomething());
我尝试了多种方法,但是我总是得到:
SyntaxError: await is only valid in async function
答案 0 :(得分:1)
您可以尝试以下方法:
//yourModule.js
let yourModule={};
yourModule.you=async()=>{
//something await...
}
modules.export = yourModule;
//app.js
let yourModule = require('<pathToModule>');
async function test()
{
await yourModule.you(); //your Await hear
}
答案 1 :(得分:1)
您误解了错误。它说
SyntaxError:等待仅在在异步函数中有效
不是“ 用于异步功能”
您的导出没有问题。根本不可能在标记为await
的函数之外使用async
。因此,该错误位于app.js
中。应该是:
var things = require("./someThings");
async function app () {
console.log(await things.doSomething());
}
app().then(() => console.log('done calling app()'));
答案 2 :(得分:0)
这可能是这个问题的duplicate。
您可以简单地将功能(或功能表达式)分配给 module.exports'的属性(或全部) >。
例如:
async function AsyncStuff () { ... }
module.exports.myAsyncThing = myAsyncStuff;
答案 3 :(得分:0)
尝试
--------------------------------------------------------------------------
id | user_id | placed_loan | cleared loan | plcd date | cld_date | status
--------------------------------------------------------------------------
1 | 2 | 5000.00 | 0.00 | 19/6/12 | | 1
2 | 2 | 0.00 | 4000.00 | | 19/6/13 | 2
3 | 2 | 2000.00 | 0.00 | 19/6/14 | | 1
4 | 3 | 4000.00 | 0.00 | 19/6/14 | | 1
5 | 2 | 0.00 | 3000.00 | | 19/6/14 | 2
6 | 3 | 0.00 | 2000.00 | | 19/6/15 | 2
--------------------------------------------------------------------------