承诺解决电话是不必要的? [复制]
Posted
技术标签:
【中文标题】承诺解决电话是不必要的? [复制]【英文标题】:Promise resolve call is unnecessary? [duplicate] 【发布时间】:2020-06-13 02:14:58 【问题描述】:我无法理解Promise.resolve。
我正在为 fetch 编写一个非常简单的包装器,以避免必须编写 then
来访问 JSON。我在网上找到了一段代码sn-p,看起来有点像这样:
function get(url)
return fetch("/api/" + url,
method: "GET",
credentials: 'include'
).then(response =>
if (response.ok)
return response.json().then(json =>
return Promise.resolve( data: json, response: response );
).catch(err =>
return Promise.resolve( response: response );
);
else
return response.json().catch(err =>
throw new Error(response.statusText);
).then(json =>
throw new Error(json.error.message);
);
);
但是,您似乎不需要 Promise.resolve
函数调用。我尝试删除它们并只写return data: json, response: response ;
,它仍然有效。
resolve
电话有什么作用吗?有必要吗?
【问题讨论】:
不,没有必要 所以这只是一个空操作?为什么他们被包括在内?用户错误? 没有必要在这样的处理程序中使用 Promise.resolve 或 Promise.reject ;这些方法旨在为您提供一种开始承诺链的方法,而不是继续。 不,它们不是必需的。如果您从then
返回某些内容,您仍然可以将其与另一个 then
链接,因为它是 Promise
- 无需明确说 return Promise.resolve()
好的,感谢您的快速响应!
【参考方案1】:
resolve 调用有什么作用吗?
是的,他们将值包装到使用该值解析的 Promise 中。当您从 .then
中返回它们时,.then
方法返回的 Promise 将解析为与返回的 Promise 解析为相同的值。
它们有必要吗?
没有。
【讨论】:
以上是关于承诺解决电话是不必要的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法判断 ES6 承诺是不是被履行/拒绝/解决? [复制]