簡體   English   中英

在 Express/Node 的回調中,響應如何工作?

[英]How does response work inside callback in Express/Node?

我有一個異步 function 從文件中獲取一些數據,然后調用回調 function 以返回結果:

    static fetchAll(callback){
        fs.readFile(pathToDB, (err, fileContent) => {
            if(err){
                callback([]);
                return;
            }
            callback(JSON.parse(fileContent));
        });
    }

然后我在我的一條路線 controller 函數中調用 function 函數,方法是傳入接收數據時觸發 res.render() 的回調:

const getShop = (req, res, next) => {
    Product.fetchAll(products => {
        console.log("Products received!, rendering");
        res.render('shop', { prods: products, pageTitle: 'Shop', path: '/'});
    });
    console.log("leaving!");
};

我的問題是:

  1. express/node 如何知道等待回調 function 完成然后調用 res.render() 而不使用 async/await 或 Promises 之類的東西? (如何在節點中處理回調內部的回調)
  2. 在這種情況下使用 Promises 會更好嗎? (除了具有 .then() 和 .catch() 的優勢)

它不等待回調。 它將在console.log("Products received, rendering") )之前執行 console.log console.log("leaving ") ) 。 只有在文件被讀取之后,它的數據才會被傳遞到res.render部分。 但是到那時 Node 已經繼續前進了。

Promise 和回調在底層是一回事。 所以這是個人喜好問題。

暫無
暫無

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

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