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

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

為什么從函數(shù)返回的promise解析為從.then返回的值

為什么從函數(shù)返回的promise解析為從.then返回的值

慕的地6264312 2021-04-07 17:19:16
我創(chuàng)建了一個(gè)返回承諾的函數(shù)。function fetch1 () { return new Promise((res, rej) => {  res("A"); });}我在函數(shù)api1中調(diào)用此函數(shù),并返回從fetch1返回的promise。function api1 () { return fetch1().then(v =>{  console.log("Api1", v);  return "B" );}如您所見,我將返回從fetch1返回的相同值。我沒有創(chuàng)建任何新的Promise。但是當(dāng)我稱呼它時(shí),我得到以下輸出。api1().then(v => console.log("Api2 call", v));Api1 AApi2 call B我的預(yù)期輸出應(yīng)該是Api1 AApi2 call A從此鏈接可以看到。然后,那個(gè)諾言就被束縛了。從第一個(gè)返回的諾言然后在接下來的第二個(gè)諾言中得到解決。但是我沒有從api1函數(shù)中返回任何承諾。我可以解決它。但是為什么會發(fā)生。
查看完整描述

3 回答

?
紅糖糍粑

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

當(dāng)您返回Promise時(shí),您實(shí)際上并沒有返回Promise內(nèi)的內(nèi)容,而是Promise本身。當(dāng)你說


function api1 () {

 return fetch1().then(v =>{

  console.log("Api1", v);

  return "B"

 );

}

您說的是“console.log上一個(gè)Promise的結(jié)果,然后返回一個(gè)包含的新Promise B。


所以當(dāng)你打電話


api1().then(v => console.log("Api2 call", v));

原始的Promise(包含“ A”)已被使用,新的Promise包含您先前返回的字符串“ B”。


要獲得您想要的輸出,請像下面這樣重寫第二部分:


function api1 () {

 return fetch1().then(v =>{

  console.log("Api1", v);

  return v;

 );

}


查看完整回答
反對 回復(fù) 2021-04-22
?
楊魅力

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

 function fetch1 () {

 return new Promise((res, rej) => {

  res("A");

 });

}


function api1 () {

 return fetch1().then(v =>{

  console.log("Api1", v);

  return "B"

 });

}


api1().then(v => console.log("Api2 call", v));

調(diào)用時(shí)api1().then(v => console.log("Api2 call", v));,api1()將等待fetch1中已解決的承諾被解析,這意味著vin theninapi1函數(shù)將等于'A',然后該then函數(shù)將'B'返回到下一個(gè),然后theninthen(v => console.log("Api2 call", v));的值v將等于' B'。我希望你明白!


查看完整回答
反對 回復(fù) 2021-04-22
?
慕碼人2483693

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

如您所見,我將返回從fetch1返回的相同值


這實(shí)際上是不完全正確,你打電話then后fetch1。那確實(shí)有所作為。


使用同步,非承諾代碼幾乎是相同的。如果返回方法:


return sum(3,7).multiply(2);


您不僅會返回sum(3,7),因?yàn)橹竽鷷騺黼娫抦ultiply(2)。由于multiply通話,該號碼將返回20 。


與promise幾乎相同,例如:


const myResultPromise = return sumPromise(3,7).then(sumValue => {

  return multiplyPromise(2);

})

在這里,這myResultPromise將是20的承諾,因?yàn)闀hen新的Promise附加到原始sumPromise。


查看完整回答
反對 回復(fù) 2021-04-22
  • 3 回答
  • 0 關(guān)注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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