在异步函数中,我可以获得如下所示的异步值:
const foo = await myAsyncFunction()
如果我想对结果调用一个方法,使用一个同步函数,我会执行类似于myAsyncFunction().somethingElse()的操作
是否可以用异步函数链接调用,还是必须为每个结果分配一个新变量?
发布于 2016-07-28 19:05:47
您可以在表达式中等待,不需要将其赋值给新变量。(尽管将它分配给一个变量可能更容易读)。
const foo = await (await myAsyncFunction()).somethingElseAsync()或者,如果要对结果调用同步方法,则为:
const foo = (await myAsyncFunction()).somethingElseSync()发布于 2021-05-22 14:35:51
你可以试试这个包裹。
// Instead of thens
fetch(url)
.then(res => res.json())
.then(json => json.foo.bar)
.then(value => console.log(value))
// Instead of awaits
const res = await fetch(url)
const json = await res.json()
const value = json.foo.bar
console.log(value)
// With prochain
const value = await wrap(fetch(url)).json().foo.bar
console.log(value)发布于 2018-06-21 14:38:17
这个答案由Tamas在await表达式周围加上括号,肯定是使用vanilla JavaScript的方法。
或者,如果您正在寻找常见的链接JS方法,并且不介意第三方模块,您可以在npm上使用异步af。这样,您就可以链接如下所示的异步方法:
const promises = [1, 2, 3].map(n => Promise.resolve(n));
AsyncAF(promises).map(n => n * 2).filter(n => n !== 4).forEach(n => console.log(n));
// logs 2 then 6<script src="https://unpkg.com/async-af@7.0.11/index.js"></script>
https://stackoverflow.com/questions/38644754
复制相似问题