Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从fetch和Promises中获取HTTP错误详细信息和文本?_Javascript_Reactjs_Error Handling_Fetch - Fatal编程技术网

Javascript 如何从fetch和Promises中获取HTTP错误详细信息和文本?

Javascript 如何从fetch和Promises中获取HTTP错误详细信息和文本?,javascript,reactjs,error-handling,fetch,Javascript,Reactjs,Error Handling,Fetch,很多帖子、问题和文章都解释了如何处理fetch请求中的HTTP错误,但解决方案只指向日志记录,或者只使用答案文本,但我希望获得响应详细信息(状态+状态文本)和响应文本(由服务器提供) 我想要一个通用的fetch\u api,我可以在我的不同组件中使用它。对于有效响应,它正在工作,但对于错误,我无法从服务器获取详细信息+文本,因为我需要返回一个拒绝的承诺,但我无法使其工作,以下是我尝试获取的 答复.状态 response.statusText response.url response.text

很多帖子、问题和文章都解释了如何处理fetch请求中的HTTP错误,但解决方案只指向
日志记录
,或者只使用答案文本,但我希望获得响应详细信息(状态+状态文本)和响应文本(由服务器提供)

我想要一个通用的
fetch\u api
,我可以在我的不同组件中使用它。对于有效响应,它正在工作,但对于错误,我无法从服务器获取详细信息+文本,因为我需要返回一个
拒绝的承诺
,但我无法使其工作,以下是我尝试获取的

  • 答复.状态
  • response.statusText
  • response.url
  • response.text()//这是一个承诺,我无法得到它和详细信息
基本处理的源代码,其中的MOT只是日志记录


最终得到它:使用
res.text()
promise,并在i中返回
promise.reject()

static fetch_api(url, method = 'get') {
    return fetch(url, {method: method})
        .then(res => {
            if (res.ok) return res.json();
            throw res;
        })
        .then(result => result)
        .catch(error => error.text().then(errormsg => Promise.reject("[" + error.status + ":" +
            error.statusText + "] while fetching " + error.url + ", response is [" + errormsg+"]"))
        )
}

App.fetch_get(host + "/status")
    .then(result => this.setState({items: result}))
    .catch(error => this.setState({error: error}}))
App.fetch_get(host + "/status")
    .then(result => this.setState({items: result}))
    .catch(error => this.setState({error: error}}))