这些异步方法声明之间有什么区别?

f5emj3cl  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(344)

引擎盖下发生的事情,是否有任何一个是“不正确的”,出于清晰或其他原因,您更喜欢哪一个?

const facade = {
    // A:
    doSomething: async () => await delegatedFunction(),
    // B:
    doSomething: async () => delegatedFunction(),
    // C:
    doSomething: () => delegatedFunction(),
    // D:
    doSomething: delegatedFunction,
}

async function delegatedFunction() {}
lsmd5eda

lsmd5eda1#

前三个函数绑定 delegatedFunction . 不能向它传递任何值(函数调用中指定的值除外)。
第三个函数也是唯一的非异步函数(尽管它仍然是异步的,只是不是异步函数对象)。它有一些不同之处,但最终对你来说可能并不重要。
例如:

(async () => 1).constructor !== (() => 1).constructor
izkcnapc

izkcnapc2#

async await 是javascript承诺的抽象。
这里没有可能的明确答案,因为你并没有写文章的主体 delegatedFunction .
a: facade.doSomething() 将返回调用 delegatedFunction b、 c和d:无论你从哪里回来,都会回报你的承诺 delegatedFunction 如果你想要更多的细节,你需要写一个更好的问题

相关问题