代码之家  ›  专栏  ›  技术社区  ›  judehall

未使用的危险等待[关闭]

  •  0
  • judehall  · 技术社区  · 6 年前

    为了提高性能,我希望在不等待所有异步函数完成的情况下退出函数。我只关心第一个函数的结果。其他人应该随时完成并记录自己的异常。

    // I care about this result
    int? bookingId = await BookingService.SaveBooking(...); 
    
    // These should run async in the background. All async methods.
    EmailService.SendEmail(...);
    CreditCardService.SaveCard(...);
    SMSService.SendSms(...);
    
    return bookingId;
    

    省略有什么风险 关键词在那里?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Marc Gravell    6 年前

    这里的主要风险是它们失败并导致未观察到的异常。第二个风险是,它们试图与某些异步状态交互,而一旦主操作完成,这些异步状态就不再有意义。如果你对这两件事都不成问题感到高兴,你应该很好——但是你应该对这种方法有点谨慎。这本质上是一个“开火并忘记”的场景-编译器将试图与您对抗