javascript 这是调用API的正确方法吗?

pu82cl6c  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(140)

我想知道我下面写的是不是正确的方法来请求API。如果不是,请帮助并建议任何不正确的地方。

function readQuoteFromRSS(rssUrl) {
  fetch(rssUrl).then(function(response) {
    return response.json();
  }).then(function(response) {
    setStore(response);
  });
}
zrfyljdw

zrfyljdw1#

它基本上是好的,除了不幸的是它成为了我在x1e0 f1.中描述的fetch API的牺牲品-fetch只拒绝它对 network 错误的承诺,而不是像404或500这样的HTTP错误。
还有几件事:
1.处理拒绝或从函数返回承诺链是很重要的,这样调用者就可以(通常你想做后者,但是如果这是一个入口点,比如一个事件处理程序,没有地方可以传递它,你必须在本地处理它)。
1.我可能不会使用response作为最后一个then中的参数名,因为它不再是一个Response对象,就像它在前一个处理程序中一样。

function readQuoteFromRSS(rssUrl) {
    return fetch(rssUrl)                                          // *** return
        .then(function (response) {
            if (!response.ok) {                                   // *** check
                throw new Error(`HTTP error ${response.status}`); // *** for HTTP
            }                                                     // *** error
            return response.json();
        })
        .then(function (data) {
            setStore(data);
        });
}

纯粹出于风格考虑,由于现代环境支持async/await,我可能会使用它:

async function readQuoteFromRSS(rssUrl) {
    const response = await fetch(rssUrl);
    if (!response.ok) {
        throw new Error(`HTTP error ${response.status}`);
    }
    const data = await response.json();
    setStore(data);
}

相关问题