簡體   English   中英

Node.js 處理承諾的最佳方式

[英]Node.js best way to handle promises

所以我的 controller 中有這樣的代碼。

const Users = require("../models/users");    

class UserController() {
    getUserById(req, res) {
        const id = req.params.id;
        const users = new Users();
        const userData = users.getUserById(uid).then(function(result) {
            //Do other logic here that depends on db result
            return res.status(200).json({status:"success", user: result});
        });
    }
}

我的問題是,這與以下有什么區別,哪個是更好的做法?

const Users = require("../models/users");    

class UserController() {
    async getUserById(req, res) {
        const id = req.params.id;
        const users = new Users();
        const userData = await users.getUserById(uid);
        return res.status(200).json({status:"success",user:userData});
    }
}

第二個 function 調用使用了 ES8 的async-await特性,這使得我們的代碼看起來也是同步和干凈的,無需在其中執行.then()和回調。 fetch()async-await都可以在 promise 上工作。

如果我可以這樣說, Aync-Await 的可讀性會更高。 這里沒有使用回調。 它只是等待第一個 API 調用發生,並且只有當數據到達(或 Promise 已解決)時,我們才會觸發另一個 API 調用。 對於程序員本身來說,使用 Async-Await 語法變得不那么容易了。

對於錯誤處理,您將需要Aync-await中的try{} catch{}塊,但在fetch()的情況下, .catch()塊會為我們處理 API 錯誤。

暫無
暫無

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

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