当前位置: 首页 > 面试题库 >

等待承诺链有什么问题?

郎恺
2023-03-14
问题内容

我正在开发Angular 6应用程序,并且被告知以下内容是反模式:

await someFunction().then(result => {
    console.log(result);
});

我意识到等待承诺链毫无意义。如果someFunction()返回Promise,则在等待时不需要Promise链。你可以这样做:

const result = await someFunction();
console.log(result);

但是有人告诉我,等待一个诺言链可能会导致错误,或者会破坏我的代码。如果上面的第一个代码段与第二个代码段执行相同的操作,那么使用哪个代码段有什么关系呢。第一段不会引入第二段带来的危险?


问题答案:

在后台,异步/等待只是承诺。

也就是说,当您有一些类似于以下代码的代码:

const result = await myAsyncFunction();   
console.log(result):

那和写完全一样:

myAsyncFunction().then(data => {
   const result = data; 
   console.log(result); 
});

当时的原因-您不应该混合使用异步/等待和.then链-是因为它令人困惑。

最好只选择一种样式并坚持下去。

当您选择一个时-您最好也选择异步/等待-这更容易理解。



 类似资料:
  • 问题内容: 我目前正在等待所有承诺按顺序完成,如下所示: 但是,通过这种方式,配置文件和令牌将顺序执行。由于两者彼此独立,因此我希望两者一起独立执行。我认为可以使用Promise.all完成此操作,但是我不确定语法,也找不到任何帮助。 所以我的问题是如何转换上面的api调用以一起运行,然后返回最终输出。 问题答案:

  • 本文向大家介绍承诺回调和异步/等待,包括了承诺回调和异步/等待的使用技巧和注意事项,需要的朋友参考一下 首先,我们必须了解两个主要概念 同步编程 异步编程 同步编程 它等待每个语句完成执行,然后再转到下一条语句。 如果语句不相互依赖,但是由于它们在队列中,它们仍在等待执行,则此方法可能会减慢应用程序的速度。 异步编程 在移动到下一条语句之前,它不等待当前语句完成执行。例如,调用Web服务并使用Ja

  • 问题内容: 因此,我遇到了多个未知长度的promise链的情况。我希望在处理所有链条后执行一些操作。那有可能吗?这是一个例子: 在此示例中,我设置了一个承诺1,,2和3,这些承诺会在某个随机时间得到解决。然后,我将诺言添加到第一和第三的结尾。我想在所有链条都解决后解决。这是运行此代码时的输出: 有没有办法等待连锁解决? 问题答案: 当所有链条都解决后,我希望所有人解决。 当然,然后将每个链的承诺传

  • 问题内容: 我有一个名为PaymentStrategy的服务,已注入我的控制器中。 paymentStrategy中的这种购买方法会触发几种需要顺序调用的方法。当buy()中的所有方法都完成后,需要调用then()。 这可能是微不足道的,但我对棱角还很陌生。 目前,在init()方法之后立即触发buy()。then()。我觉得我们需要将所有这些方法放在一个promise中,并应用$ q.all()

  • 问题内容: 我试图摆脱使用Mongoose Promise与Node.js的async / await功能的束缚。调用我的函数时,我想保存该函数查询的员工列表。同时,内部的语句返回期望的查询,在内部的returns返回,表明我没有正确返回promise。 我对承诺完全陌生,以至于我没有正确理解范例……非常感谢您的帮助。 问题答案: 您需要这样做,否则您正在等待返回的函数。 当前,您正在等待非承诺,

  • 问题内容: 我有一个对象列表。对象将传递给延迟函数。我只想在上一次调用解决后才使用下一个对象调用函数。有什么办法可以做到吗? 问题答案: 在ES2017之前和之后(请参见下文中的ES2017中的选项),如果要等待诺言就不能使用,因为诺言没有阻塞。Javascript和Promise不会那样工作。 您可以链接多个promise,并使promise基础结构对它们进行排序。 您可以手动进行迭代,并且仅在