了解promse.reject()以及如何将对象作为参数传递

时间:2018-03-30 13:35:10

标签: javascript node.js

我在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;

2 个答案:

答案 0 :(得分:0)

.reject(和.resolve)只接受一个参数。您可以将其作为对象传递:

return Promise.reject({ status: response.status, body: response.json() });

同样使用return response.json();似乎不一致。如果它返回一个承诺,那么你就不能在Promise.reject中使用它,因为你将得到承诺而不是正文。如果它没有返回承诺,那么你只会返回失败条件的承诺。

答案 1 :(得分:0)

reject只接受一个参数。如果要传递多个数据,则需要将它们捆绑在(例如)对象中。

&#13;
&#13;
var p = new Promise(
  (res, rej) => rej({
    status: "status",
    data: {
      some: "object"
    }
  })
);
p.catch(reason => console.log("Rejected", reason.status, reason.data));
&#13;
&#13;
&#13;