第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么json()返回一個承諾?

為什么json()返回一個承諾?

為什么json()返回一個承諾?我一直在胡鬧fetch()最近,API注意到了一些有點古怪的東西。let url = "http://jsonplaceholder.typicode.com/posts/6";let iterator = fetch(url);iterator  .then(response => {       return {           data: response.json(),           status: response.status      }   })   .then(post => document.write(post.data));;post.data返回Promise對象。http://jsbin.com/wofulo/2/edit?js,輸出但是,如果它寫成:let url = "http://jsonplaceholder.typicode.com/posts/6";let iterator = fetch(url);iterator  .then(response => response.json())   .then(post => document.write(post.title));;post這是一個標(biāo)準(zhǔn)Object它可以訪問title屬性。http://jsbin.com/wofulo/edit?js,輸出所以我的問題是:為什么response.json返回對象文字中的承諾,但返回值如果剛剛返回?
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

為什么response.json還承諾?

因為你收到了response只要所有標(biāo)題都到了。呼叫.json()獲取尚未加載的HTTP響應(yīng)主體的另一個承諾。另見為什么JavaScriptFETCH API中的響應(yīng)對象是一個承諾?.

如果我從then處理程序?

因為承諾就是這樣運作的..從回調(diào)中返回承諾并使其被采納的能力是它們最相關(guān)的特性,它使它們無需嵌套就可以鏈接。

你可以用

fetch(url).then(response => 
    response.json().then(data => ({
        data: data,
        status: response.status    })).then(res => {
    console.log(res.status, res.data.title)}));

或任何其他訪問先前承諾的方法會導(dǎo)致.Then()鏈等待JSON身體后獲得響應(yīng)狀態(tài)。


查看完整回答
反對 回復(fù) 2019-07-15
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

這種差異是由于承諾的行為,而非承諾。fetch()特別是。

當(dāng).then()回調(diào)返回額外的Promise,下一個.then()鏈中的回調(diào)本質(zhì)上是與該承諾綁定在一起的,它接受它的決心或拒絕它的實現(xiàn)和價值。

第二個片段也可以編寫為:

iterator.then(response =>
    response.json().then(post => document.write(post.title)));

無論是這種形式還是你的,post返回的承諾所提供的response.json().


當(dāng)你回到平原Object不過,.then()認為一個成功的結(jié)果并立即解決,類似于:

iterator.then(response =>
    Promise.resolve({
      data: response.json(),
      status: response.status    })
    .then(post => document.write(post.data)));

post在本例中,只是Object您創(chuàng)建的,其中包含一個Promise在其data財產(chǎn)。等待這一承諾的實現(xiàn)仍然是不完整的。


查看完整回答
反對 回復(fù) 2019-07-15
?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

而且,幫助我理解您所描述的這個特定場景的是承諾API。文獻資料,特別是在哪里,它解釋了承諾是如何由then方法將根據(jù)處理程序FN返回:

如果處理程序函數(shù):

  • 返回一個值,然后以返回的值作為它的值來解析返回的承諾;
  • 拋出一個錯誤,然后返回的承諾以拋出的錯誤作為其值而被拒絕;
  • 返回一個已經(jīng)解決的承諾,然后以該承諾的價值作為其價值來解決該承諾所返回的承諾;

  • 返回一個已經(jīng)被拒絕的承諾,然后返回的承諾以該承諾的值作為其價值而被拒絕。
  • 返回另一個掛起的承諾對象,此時返回的承諾的解析/拒絕將在處理程序返回的承諾的解析/拒絕之后。此外,到那時返回的允諾的值將與處理程序返回的允諾的值相同。


查看完整回答
反對 回復(fù) 2019-07-15
  • 3 回答
  • 0 關(guān)注
  • 538 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號