【发布时间】:2021-09-28 17:41:24
【问题描述】:
以下面的代码为例。在这样的场景中将 await 与 .then 混合有什么问题吗?在我看来,像const json = await assetParam.json() 等那样为每个步骤声明 await 似乎没有意义和笨拙。当我们真正关心的是最终响应(至少在这个例子中)但有人告诉我混合 await 与 .then 可以导致对于一些难以诊断的错误,我正在努力理解它们。任何信息/资源将不胜感激,谢谢!
async function getParams(assetId) {
const reqUrl = `https://somelink/${assetId}`
const assetParam = await fetch(reqUrl)
.then((res) => res.json())
.then((json) => json.asset.params)
return assetParam
}
【问题讨论】:
-
async函数和await的重点 是为了避免构建.then()回调链。 -
async/await和.then完全可以互操作。不过,IMO 最好坚持其中一个,至少在每个模块的基础上。请注意,在您的情况下不需要assetParam,您可以直接返回链(此时您不需要await任何东西,实际上也不需要制作getParamsasync)。 -
投票重新开放。主要基于意见似乎是一个糟糕的关闭理由,因为像这样混合 async/await 和 Promise 被广泛认为是一个坏主意,而不是一个高度争议/主观的讨论。
-
const getParams = async url => (await ((await fetch(url)).json())).asset.params
标签: javascript async-await es6-promise