簡體   English   中英

用Javascript中的嬰兒車鏈接諾言

[英]Chaining promises with prams in Javascript

試圖將兩個諾言鏈接在一起,使一個諾言成為可能。 如何鏈接它們? p1().then(p2(23)); 沒用

function p1() {
 return new Promise(function(resolve, reject) {
  setTimeout(function(){
   console.log("hey p1")
    resolve()
  }, 2000)
 })
}
function p2(b) {
 return new Promise(function(resolve, reject) {
  setTimeout(function(){
   console.log("hey p2: " + b)
    resolve()
  }, 2000)
 })
}

p1().then(p2(23));

您應該傳遞返回promise的函數,例如:

function p1() {
 return new Promise(function(resolve, reject) {
  setTimeout(function(){
   console.log("hey p1")
    resolve()
  }, 2000)
 })
}
function p2(b) {
 return new Promise(function(resolve, reject) {
  setTimeout(function(){
   console.log("hey p2: " + b)
    resolve()
  }, 2000)
 })
}

p1()
  .then(function(){
      return p2(23)
  });

如果可以的話,我建議您使用async/await

我在Chrome控制台中運行了該程序,它按預期運行。

async function p1() {
  await setTimeout(function(){
    console.log("hey p1");
  }, 2000)
}
async function p2(b) {
  await setTimeout(function(){
    console.log("hey p2: " + b)
  }, 2000)
}

p1().then(() => p2(23));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM