fetch res.json 继续 return 未解决的承诺
fetch res.json continues to return unresolved promise
我期待这个:
fetch('https://response.democratsabroad.org/photos/?tag=alex')
.then(res=>res.json())
.then(res=>console.log(res))
到return一个json对象。相反,它是 return 未决的承诺。
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
screenshot of javascript console
为什么它会传递未解决的承诺而不是已解决的价值?
首先,如果您还不知道这一点,只要您直接在控制台中 运行 一行代码,控制台就会打印出该行代码的计算结果。如果该行代码是一个函数调用或一系列函数调用,如 fetch(...).then(...).then(...)
,那么控制台将显示该函数链 return 的内容。它不会等待承诺解决或回调被调用,它只是执行那行代码并报告它return编辑的内容。
并且,fetch().then()
或 fetch().then().then()
return 是一个处于挂起状态的承诺。这就是它的作用。然后,稍后当 fetch()
操作完成时,第一个承诺将完成并调用它的 .then()
处理程序。
但是,如果您只是查看控制台中的 fetch().then()
或 fetch().then().then()
return,它总是 return 未解决的承诺处于挂起状态,因为异步操作尚未完成,因此控制台将显示 return 值。
您使用 promises 以便它们在将来的适当时间执行它们的 .then()
处理程序。因此,如果您想查看异步操作的结果,您应该记录传递给 .then()
处理程序的内容,然后在调用它们时,您将看到记录的相应数据。
注意:您还应该在链的末尾有一个 .catch()
处理程序,这样您就可以看到承诺链中发生的任何错误。
我期待这个:
fetch('https://response.democratsabroad.org/photos/?tag=alex')
.then(res=>res.json())
.then(res=>console.log(res))
到return一个json对象。相反,它是 return 未决的承诺。
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
screenshot of javascript console 为什么它会传递未解决的承诺而不是已解决的价值?
首先,如果您还不知道这一点,只要您直接在控制台中 运行 一行代码,控制台就会打印出该行代码的计算结果。如果该行代码是一个函数调用或一系列函数调用,如 fetch(...).then(...).then(...)
,那么控制台将显示该函数链 return 的内容。它不会等待承诺解决或回调被调用,它只是执行那行代码并报告它return编辑的内容。
并且,fetch().then()
或 fetch().then().then()
return 是一个处于挂起状态的承诺。这就是它的作用。然后,稍后当 fetch()
操作完成时,第一个承诺将完成并调用它的 .then()
处理程序。
但是,如果您只是查看控制台中的 fetch().then()
或 fetch().then().then()
return,它总是 return 未解决的承诺处于挂起状态,因为异步操作尚未完成,因此控制台将显示 return 值。
您使用 promises 以便它们在将来的适当时间执行它们的 .then()
处理程序。因此,如果您想查看异步操作的结果,您应该记录传递给 .then()
处理程序的内容,然后在调用它们时,您将看到记录的相应数据。
注意:您还应该在链的末尾有一个 .catch()
处理程序,这样您就可以看到承诺链中发生的任何错误。