簡體   English   中英

Nodejs在沒有等待的情況下調用異步function有什么問題嗎?

[英]Nodejs any problem in calling async function without await?

我有一個端點,我想做一些用戶不感興趣的async后處理,所以我想異步處理它們並向用戶發送響應。

像這樣的東西。

const createOrder = async (req,res)=>{

  const order = await doCreateOrder(); //creates the order
  somePostProcessing().catch(()=>{
       //handle errors
    });//asycn function which does some db/network operations(not interested in results)
  return reply.send(order)

}

但我擔心它會導致任何問題,例如 memory 泄漏(我的團隊負責人這么說)等等? 在nodeJS中進行此類后期處理的最佳方式或其他選擇是什么?

忽略 promise 的結果不是問題。 您是否聆聽 promise 的成功完成完全是可選的。 有時有理由不在乎。 例如,我經常不讓 function 等待 function 末尾的文件關閉。

忽略被拒絕的 promise 是一個問題,因為這類似於同步代碼中的未處理異常。

因此,只要您正在處理所有可能的錯誤,就像您使用somePostProcessing().catch(...)一樣,那么忽略完成就沒有問題。

注意:您確實需要確保您的代碼預測到如果await doCreateOrder()中出現錯誤會發生什么,因為這將立即拒絕 createOrder() 返回的 promise 因此 createOrder createOrder() createOrder()的調用者需要有一個處理程序來處理被拒絕的promise 或者您需要在此 function 中使用try/catch來捕獲和處理可能的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM