匿名异步函数调用

5

是否可以创建匿名异步函数?

当然,命名函数是可行的:

const test = async() => {
 await ... //fetch some data
}

但是无名的异步函数应该怎样使用工作语法呢?我们需要在这里使用IIFE来调用它吗?

1
test()怎么样? - Sajib Khan
一个IIFE可以构建它,但为什么你想要一个真正的匿名函数呢? - Denys Séguret
您可以简单地省略名称,使其成为匿名的。 - Sparlarva
是的,您可以执行IIFE。但是匿名函数会使调试变得困难,并且堆栈跟踪也很难读取。尽可能给您的函数命名 :) - Shyam Babu
实际上,你的代码片段已经是一个匿名的异步函数了。它不是一个有命名的函数。 - georg
3个回答

4

双向绑定

  1. 简单方式
!async function () {
    console.log("e",'yibu');
}();

或者
(async  () => {
    console.log("e",'yibu');
})();

//maybe this is better then above
;(async function () {
    console.log("e",'yibu');
}());

//this is allmost same
;[ async function () {
    console.log("e",'yibu');
}()];
  1. 如果使用 [then] ,则这并不是完全匿名的。
var x=async  () => 100;

x().then(
    e=>console.log({e})
);

2

const test = async (asyncFunc) => {
    return await asyncFunc()
}

test(async () => { 
    return "Hello World!"
}).then(console.log)


在Javascript中,return await从来不是必需的。 - lonesomeday
1
@lonesomeday FYI,99%的情况下是正确的,在这种情况下也是如此,但如果您在try块内使用它,则不是。 - loganfsmyth
@loganfsmyth 虽然这是正确的,我承认技术上的观点,但操作序列可能会令人困惑,因此我会立即重构任何我遇到的代码! - lonesomeday
它有优点和缺点。我喜欢这样写,因为它是一个很好的指示器,告诉你函数是异步的。例如,如果你决定将解析后的值分配给一个变量而不是直接返回,你不必先检查实现是否是异步的。 - Forivin

0
async function() => {
   await ... 
}

异步函数() => { 1 } VM3385:1 抛出语法错误:意外的标记 ( - CS QGB

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