调用异步函数

3
我有一个模块如下:

async.js

该模块名为 async.js。
module.exports = async function (){
    await func()
}

index.js

var asyncFun = require('async') 

我怎样才能在index.js中直接运行asyncFun()

我知道如何将这些函数作为中间件运行,但我想直接运行它。要运行它,我需要调用await,而且await不能在不在async内部的情况下被调用。


2
你不需要调用await,只需运行asyncFunc()。 - ChrLipp
你可以使用默认的 Promise 语法:asyncFun().then( () => doSomething() ) - Sirko
@Sirko可以做到,但问题在于下面有很多代码,我需要使用异步来保持代码的整洁。 - Prajval M
@ChrLipp 这将以异步方式工作。即使我等待承诺解决,我也不想使用 then。 - Prajval M
@SAGARRAVAL 与上述相同。 - Prajval M
显示剩余2条评论
3个回答

5
你可以使用这个:
(async () => {
    await asyncFun();
})();

这是一个异步函数。 - Prajval M
你是在哪个上下文中调用 asyncFun 的? - Guerric P
每次我启动我的节点脚本,它都必须运行。 - Prajval M
如果您想在脚本的根目录中使用async/await语法,那么我的答案应该能够满足您的需求。您还需要将代码的其余部分复制到lambda异步函数中。 - Guerric P
让我们在聊天室中继续这个讨论 - Prajval M
显示剩余3条评论

0

我通过将根函数设置为异步函数,并使用普通函数包装所有异步函数,使异步函数返回一个 Promise 来解决了这个问题(使用调用)。

例如:

假设这是您编写所有代码的主要函数。

// create it as a async function
module.exports = async function main(){
    // Do something all your stuff
}

从其他地方调用您的主函数

require('./main)()

0

尝试在async.js中添加return语句

module.exports = async function (){
    return await func()
}

并直接运行asyncFun()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接