猿问

为什么 JavaScript Promise.all 没有解决承诺

我有以下代码从不同的新闻网址获取新闻;


function displayNews() {


    Promise.all([fetch(BUSINESS_NEWS_URL), fetch(APPLE_NEWS_URL)])

    .then(responses => {

        return responses.map(response => response.json())

    }).then((data) => console.log(data)) // this still prints [Promise]

}

出于某种原因,我得到显示 [Promise] 而不是实际数据。我错过了什么?


互换的青春
浏览 100回答 2
2回答

Helenr

json() 返回一个承诺,所以它会是另一个 Promise.allPromise.all([fetch(u1), fetch(u2)])    .then(responses => {        return Promise.all(responses.map(response => response.json()))    }).then((data) => console.log(data))大多数人不会使用两个promise alls。他们将通过 fetch 调用返回 JSONconst grabJSON = url => fetch(url).then(x => x.json())const calls = ['url1', 'url2'].map(grabJSON)Promise.all(calls)  .then((data) => console.log(data))

慕哥6287543

json是一种异步方法。尝试这样的事情:function displayNews() {     Promise.all([fetch(BUSINESS_NEWS_URL), fetch(APPLE_NEWS_URL)])    .then(responses => {        return Promise.all(responses.map(response => response.json()))     })     .then(responses => {        return responses.map(data => console.log(data))     })}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答