JS es6 如何将两个请求写回调?

有A、B两个promise请求,希望B在A返回结果后才发起,但又不想将B写到A里面去,请问怎么写?

阅读 3.4k
4 个回答
function A () {
  return new Promise((res, rej) => {
    setTimeout(() => {
      console.log('A')
      res('say hi from A')
    }, 1000)
  })
}
function B (data) {
  return new Promise((res, rej) => {
    setTimeout(() => {
      console.log('B')
      console.log(data)
      res()
    }, 1000)
  })
}
A().then(data => B(data))
function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}



async function add2(x) {
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  return x + a + b;
}

add2(10).then(v => {
  console.log(v);  // prints 60 after 4 seconds.
});
A().then(res => {
    return B();
}).then(res => {
    // 你说的不想写到里面,我理解为你指的是结果处理?
})

如果以上不满足,那就用 Generator 函数吧

function A() {
    return new Promise((resolve) => {
        // do something
        //
        resolve(123);
    });
}

function B(result) {
    console.log(result);
}

A().then(B);    // 123

B写到A里去指的是什么,想了想只有callback方式才会那样吧?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题