链接承诺与Javascript中的婴儿车

时间:2017-10-02 21:55:29

标签: javascript asynchronous promise

尝试将两个承诺链接在一起,其中一个采用参数。我该如何链接它们? 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));

2 个答案:

答案 0 :(得分:2)

你应该传递返回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)
  });

答案 1 :(得分:-2)

如果您能够,我建议您使用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));