我在Promise.reject()中传递response.json,以便它可以在catch中使用。 然而,在捕获它是未定义。
const checkResponse = (response) => {
if (response.status >= 200 && response.status < 300) {
return response.json();
}
else{
return Promise.reject(response.status,response.json());
}
}
以下是catch块
.catch((status,resp) => {
console.log('Request failed', status, resp);
});
catch中的resp显示为&#34; undefined&#34;
答案 0 :(得分:0)
.reject
(和.resolve
)只接受一个参数。您可以将其作为对象传递:
return Promise.reject({ status: response.status, body: response.json() });
同样使用return response.json();
似乎不一致。如果它返回一个承诺,那么你就不能在Promise.reject
中使用它,因为你将得到承诺而不是正文。如果它没有返回承诺,那么你只会返回失败条件的承诺。
答案 1 :(得分:0)
reject
只接受一个参数。如果要传递多个数据,则需要将它们捆绑在(例如)对象中。
var p = new Promise(
(res, rej) => rej({
status: "status",
data: {
some: "object"
}
})
);
p.catch(reason => console.log("Rejected", reason.status, reason.data));
&#13;