使用async的自调用函数的Javascript语法
在JS中,In可以使用async编写一个自调用箭头函数,如下所示:使用async的自调用函数的Javascript语法,javascript,asynchronous,promise,arrow-functions,Javascript,Asynchronous,Promise,Arrow Functions,在JS中,In可以使用async编写一个自调用箭头函数,如下所示: (async () => { const promis = fetch(uri); console.log(await promis); })(); { // do something } 一个没有参数的自调用函数,我也可以这样写: (async () => { const promis = fetch(uri); console.log(await promis); })(
(async () => {
const promis = fetch(uri);
console.log(await promis);
})();
{
// do something
}
一个没有参数的自调用函数,我也可以这样写:
(async () => {
const promis = fetch(uri);
console.log(await promis);
})();
{
// do something
}
我在问自己,是否有一种语法可以将两者结合起来并做类似的事情,或者第一个例子已经是最短的形式了
// this is not working
async {
const promis = fetch(uri);
console.log(await promis);
}
不,你不能。
block语句
只会创建一个新的作用域,就像IIFE一样。然而,异步函数是异步执行的,不能用块来完成。不,不能。block语句
只会创建一个新的作用域,就像IIFE一样。然而,异步函数是异步执行的,不能用块来完成。在Javascript语法中,async
是函数的修饰符。因此,唯一可以async
的就是函数
您的第二段代码只是一个块。它不会创建新函数或新函数作用域。而且,根据Javascript语法,不能对块使用async
。例如,在该块中使用var
声明的变量仍将被提升到包含函数作用域的顶部,因为这不会创建新的函数作用域
您的第三部分代码不起作用,因为async
仅适用于函数,而不适用于块(根据Javascript规范)
如果你想要一段内联的
async
代码,你必须声明并执行一个函数,而你的第一个代码块就是一种简洁的方法。你必须有一个函数,而不仅仅是一个块。在Javascript语法中,async
是函数的修饰符。因此,唯一可以async
的就是函数
您的第二段代码只是一个块。它不会创建新函数或新函数作用域。而且,根据Javascript语法,不能对块使用async
。例如,在该块中使用var
声明的变量仍将被提升到包含函数作用域的顶部,因为这不会创建新的函数作用域
您的第三部分代码不起作用,因为async
仅适用于函数,而不适用于块(根据Javascript规范)
如果你想要一段内联的
async
代码,你必须声明并执行一个函数,而你的第一个代码块就是一种简洁的方法。你必须有一个函数,而不仅仅是一个块。双向,我们只需要简短一点:)
!异步函数(){
log(“e”,“yibu”);
}();
还是像你一样
(异步()=>{
log(“e”,“yibu”);
})();
//也许这比上面的更好
;(异步函数(){
log(“e”,“yibu”);
}());
//这完全一样
;[异步函数(){
log(“e”,“yibu”);
}()];
var x=async()=>100;
那么(
e=>console.log({e})
);
双向,我们只需要短一点:)
!异步函数(){
log(“e”,“yibu”);
}();
还是像你一样
(异步()=>{
log(“e”,“yibu”);
})();
//也许这比上面的更好
;(异步函数(){
log(“e”,“yibu”);
}());
//这完全一样
;[异步函数(){
log(“e”,“yibu”);
}()];
var x=async()=>100;
那么(
e=>console.log({e})
);
第二个代码段不是没有参数的自调用函数,它只是一个块。例如,var声明的作用域不在第二个示例async
属性函数中,因此初始语法尽可能简洁。第二个代码段不是没有参数的自调用函数,它只是一个块。例如,var声明的作用域不在第二个示例async
属性函数中,因此初始语法尽可能简洁。说异步函数不是异步执行的有点误导。当您调用异步函数时,它将同步执行(直到第一个wait
),然后返回一个承诺。事实上,如果没有await
,它是完全同步执行的。说异步函数不是异步执行的有点误导。当您调用异步函数时,它将同步执行(直到第一个wait
),然后返回一个承诺。事实上,如果其中没有wait
,那么它是完全同步执行的。