簡體   English   中英

每個數組中的node.js異步瀑布

[英]node.js async waterfall for each in array

我有一個允許用戶查看電影的應用程序,並且我正在嘗試添加一項功能,可從電影中獲取海報並將其顯示在評論旁邊。 我嘗試使用

查詢數據庫並返回電影列表=> imdb-id以獲取IMDB ID => imdb以獲取海報url =>將其添加到變量中並使用pug進行編譯

但是,我無法使它正常工作,因為在運行其他任何操作之前,該數組始終首先返回空。 我嘗試使用異步瀑布,但無法弄清楚如何遍歷返回的數組,並傳遞ID以獲取url

async.waterfall([
    function (callback) {
        console.log('Request Id:', username);
        var query = "SELECT title, rating, review FROM movies WHERE username = \"" + username + "\" ORDER BY title;";
        callback(null, query);
    }, function (query, callback) {
        // Run query on db
        connection.query(query, callback);
    }, function (rows, fields, cb) {
        // Get array of titles
        var rowArray = rows;
        console.log(rowArray);
    }
],
function(err) {
    // error stuff
})

我建議您改為使用Promise或es2017 async / await。

旁注:異步瀑布中的第一個塊無論如何都是同步的,並且您不在那里執行任何冗長的操作。 您可以將connection.query行合並到其中。

使用異步/等待,您的代碼可能如下所示:

async function sendQuery() {
  console.log('Request Id:', username);
  const query = "SELECT title, rating, review FROM movies WHERE username = \"" + username + "\" ORDER BY title;";

  try {
    const rows = await connection.query(query);
    console.log(rowArray);
  } catch(err) {
     console.log(err);
  }
}

暫無
暫無

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

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