等待似乎没有等待我的功能中的结果

我意识到这里已经提出了这样的问题,在我发布此问题之前,我已经进行了广泛的研究。

我有七个需要按顺序运行的操作。大多数与数据库相关,因此可能需要一些时间才能完成。

  1. getLiveItems => puppeteer页面(平均10秒)
  2. getOldItems => mySQL查询
  3. getNewItems => mySQL查询
  4. compareItems => lodash比较
  5. saveOldItems => mySQL插入查询
  6. saveNewItems => mySQL插入查询
  7. notifyUser => puppeteer打开页面

我了解我需要使用回调或Promise。但是我什至无法使用这两种方法来完成前两个操作。

这是我最近的尝试。

var oldItems, newItems;


var getoldItems = async function(callback) {
    await connection.query('SELECT * FROM items', function(err, rows) {
        if (err) {
            throw err;
        } else 
            callback(null, rows);
    });
}

var getnewItems = async function(callback) {
    await connection.query('SELECT * FROM newItems', function(err, rows) {
        if (err) {
            throw err;
        } else 
            callback(null, rows);
    });
}



const init = async function(){

    await getoldItems(function(err, content) {
        if(err){
            console.log(err);

        } else {
            oldItems = content;
            return oldItems;
        }
    })

    await getnewItems(function(err, content) {
        if(err){
           // console.log(err);  
        } else {
            newItems = content;
            return newItems;
        }
    })

    return;

}

( async function() {
 await init();
 console.log(oldItems);
 console.log(newItems);   
});

我没有输出。也没有错误。

我真的很困惑我已经阅读并阅读了有关此主题的内容,但是我缺少一些基本知识。

这就是我处理脚本的方式,这就是我这样编写脚本的原因...

我将等待init函数的结果,该函数会   以下...      我将等待getOldItems的结果,然后继续   等待getNewItems的结果。那我要回去   返回Init并控制两个结果。

我想念什么?

先感谢您。

在佛罗里达沮丧 约翰

评论