【发布时间】: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() -
好的,感谢您的快速响应!
标签: javascript promise