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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)問為什么json()返回一個(gè)承諾?

請(qǐng)問為什么json()返回一個(gè)承諾?

守候你守候我 2019-10-21 12:12:31
為什么json()返回一個(gè)承諾?我一直在胡鬧fetch()最近,API注意到了一些有點(diǎn)古怪的東西。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對(duì)象。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這是一個(gè)標(biāo)準(zhǔn)Object它可以訪問title屬性。http://jsbin.com/wofulo/edit?js,輸出所以我的問題是:為什么response.json返回對(duì)象文字中的承諾,但返回值如果剛剛返回?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

為什么response.json還承諾?

因?yàn)槟闶盏搅?/trans>response只要所有標(biāo)題都到了。呼叫.json()獲取尚未加載的HTTP響應(yīng)主體的另一個(gè)承諾。另見為什么JavaScriptFETCH API中的響應(yīng)對(duì)象是一個(gè)承諾?.

如果我從then處理程序?

因?yàn)?/trans>承諾就是這樣運(yùn)作的..從回調(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)}));

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



查看完整回答
反對(duì) 回復(fù) 2019-10-22
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

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

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

第二個(gè)片段也可以編寫為:

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

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


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

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

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



查看完整回答
反對(duì) 回復(fù) 2019-10-22
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

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

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

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

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



查看完整回答
反對(duì) 回復(fù) 2019-10-22
  • 3 回答
  • 0 關(guān)注
  • 427 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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