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