簡體   English   中英

將承諾鏈轉換為異步等待

[英]Convert promise chain to async await

我想將承諾轉換為異步等待,但我無法找到正確的方法來確保每個調用都有效。

我試圖在刪除用戶時從 mongodb 集合和 s3 存儲桶中刪除與用戶相關的所有數據。

這段代碼是由其他人編寫的,我正在嘗試將其重構為更具可讀性和效率的狀態。

 "use strict"; const deleteById = require("./logic/deleteById"); const deleteFootPrint = require("./logic/deleteFootPrint"); const fileUpload = require("../../helpers/fileUpload"); const deleteDocuments = require("./logic/deleteDocuments"); const deleteAssignments = require("./logic/deleteAssignments"); const deleteQueries = require("./logic/deleteQueries"); const deleteStudyProgress = require("./logic/deleteStudyProgress"); module.exports = (config, services, models) => { return (req, res, next) => { return deleteById(models, req.params) .then((user) => { return deleteFootPrint(models, req.params) .then(() => { if (!user["profile_key"]) { res.status(200).json({ success: true }); } else { console.log(user["profile_key"]); fileUpload .deleteProfilePicture(user.profile_key, services.s3, config) .then(() => { fileUpload .deleteUserDocuments(user.profile_key, services.s3, config) .then(() => { fileUpload.deleteUserAssignments( user.profile_key, services.s3, config ); }); }) .catch((err) => { next(err); }); } }) .then(() => { return deleteDocuments(models, req.params).then(() => { return deleteAssignments(models, req.params).then(() => { return deleteQueries(models, req.params).then(() => { return deleteStudyProgress(models, req.params) .then((results) => { res.status(200).json({ success: true }); }) .catch((err) => { next(err); }); }); }); }); }) .catch((err) => { next(err); }); }) .catch((err) => { next(err); }); }; };

像這樣的東西...

module.exports = (config, services, models) => {
  return async (req, res, next) => {
    const user = await 
    deleteById(models, 
    req.params)
      
    await deleteFootPrint(models, 
    req.params)
         
   And so on...

願您了解如何將代碼從 promise 轉換為 async/await 代碼。

 "use strict"; const deleteById = require("./logic/deleteById"); const deleteFootPrint = require("./logic/deleteFootPrint"); const fileUpload = require("../../helpers/fileUpload"); const deleteDocuments = require("./logic/deleteDocuments"); const deleteAssignments = require("./logic/deleteAssignments"); const deleteQueries = require("./logic/deleteQueries"); const deleteStudyProgress = require("./logic/deleteStudyProgress"); module.exports = async (config, services, models) => { return async (req, res, next) => { try { let user = await deleteById(models, req.params); if (user) { await deleteFootPrint(models, req.params); if (!user["profile_key"]) { return res.status(200).json({ success: true }); } else { console.log(user["profile_key"]); await fileUpload.deleteProfilePicture(user.profile_key, services.s3, config); await fileUpload.deleteUserDocuments(user.profile_key, services.s3, config); await fileUpload.deleteUserAssignments(user.profile_key, services.s3, config); } } await deleteDocuments(models, req.params); await deleteAssignments(models, req.params); await deleteQueries(models, req.params); let results = await deleteStudyProgress(models, req.params); if (results) { return res.status(200).json({ success: true }); } } catch (error) { console.log(error) } }; };

暫無
暫無

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

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