【问题标题】:Sequential async await calls aren't calling properly顺序异步等待调用未正确调用
【发布时间】:2018-08-22 20:25:49
【问题描述】:

我试图更好地理解承诺,但我不明白为什么这不起作用。

async function fooTheBar(a) {
  const b = await Foo(a);
  const c = await Bar(b);
  const d = await fooBar(c);
  return {foooo: d};
}

在现场练习中,await bar(b) 在 b 完成由 await Foo(a) 定义之前运行。所有的函数都是异步编写的,它们都返回数据。

【问题讨论】:

  • 它有效。它按顺序执行。无论您的“现场练习”是什么,它都是由其他原因引起的。
  • 向我们展示不同异步函数的内容,因为人们无法猜测这些函数在做什么。
  • 你的函数可能实际上并没有返回承诺。

标签: javascript asynchronous async-await


【解决方案1】:

也许你可以用下面的代码解决

function Foo(param){
  return new Promise(function(resolve, reject) {
    resolve(param);
  });
}

function Bar(param){
  return new Promise(function(resolve, reject) {
    resolve(param);
  });
}

function fooBar (param){
  return new Promise(function(resolve, reject) {
    resolve(param);
  });
}

async function fooTheBar(a) {
  const b = await Foo(a);
  const c = await Bar(b);
  const d = await fooBar(c);
  return {foooo: d};
}

fooTheBar("foo").then((resp)=>{  console.log(resp)})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多