我很困惑,爲什麼這個代碼返回承諾的數組,而最後一位返回的實際數據(對象數組):異步()伺機返回,而不是數據無極
(async() => {
\t \t const [user, posts] = await Promise.all([
\t \t \t fetch('https://jsonplaceholder.typicode.com/users'),
\t \t \t fetch('https://jsonplaceholder.typicode.com/posts')
\t \t ]).then(([res,res2]) => [res.json(),res2.json()]
\t \t).then(([d1,d2]) => {
\t \t \t console.log(d1,d2);
\t });
})();
// Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Array(10)}
// Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: Array(100)}
當我用自己取,我得到的數據我想:
fetch('https://jsonplaceholder.typicode.com/posts')
\t .then((res) => res.json())
\t .then((data) => console.log(data)); // returns array of objects
// (100) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, ...
@ jfriend00這很有意義。謝謝。我在https://hackernoon.com/javascript-hacks-for-es6-hipsters-67d633ce8ace上看到了這個「ES6時尚人士的JavaScript黑客」中的例子,我想我會試試。 雖然一個快速筆記。此代碼現在返回「未捕獲(承諾)TypeError :(中間值)不可迭代」 – rsilva
@rsilva - 哪些代碼返回該錯誤? – jfriend00
您在上面提供的那個。 – rsilva