首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Async-Await仍在异步运行

Async-Await仍在异步运行
EN

Stack Overflow用户
提问于 2019-06-15 00:57:51
回答 2查看 547关注 0票数 0

等待Select *函数,然后在打印完成后执行某些操作。但是在打印输出之后,它就会匆忙地经过等待,做完所有的事情。所以它是这样的:调用Await函数,然后在await之后运行其他东西,然后调用resolve,然后打印出await函数。

老实说,我已经尝试了很多。使匿名异步块在函数内部运行等待。我之前没有在函数中使用promises,但后来添加了它们,认为我需要解决它们。但没有骰子。

代码语言:javascript
复制
var sqlite3 = require('sqlite3').verbose();

var db = new sqlite3.Database(__dirname+'/requestLog.db');

test();
async function test(){
    await selectAll();

    console.log('test')
}

function selectAll(){
    return new Promise((resolve, reject) => {
        try {
            db.serialize(function() {   
                db.each("SELECT rowid AS id,* FROM requests", function(err, row) {
                    console.log(row);  
                });
                resolve()
            });
        } catch (error) {
            console.log(`Error With Select ALL(): \r\n ${error}`)
            reject();
        }
    });
 }

我敢肯定只是我错过了一些可笑的东西。现在我感觉像是掉进了一个洞里,转来转去,请不要评判我,哈哈

我想将数据库中的所有内容都打印到控制台。然后在打印后执行(“test”)或其他任何操作。

但所有的一切都在等待中

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-15 02:33:55

问题是resolve()是在db.each()之后调用的,正确的位置应该是完整的回调:文档中的Database#each(sql, [param, ...], [callback], [complete])https://github.com/mapbox/node-sqlite3/wiki/API#databaseeachsql-param--callback-complete

代码语言:javascript
复制
function selectAll() {
    return new Promise((resolve, reject) => {
        try {
            db.serialize(function () {
                db.each("SELECT rowid AS id,* FROM requests", function (err, row) {
                    console.log(row);
                },
                    (err, rowCount) => {
                        if (err) reject(err);
                        resolve(rowCount);
                    }
                );
            });
        } catch (error) {
            console.log(`Error With Select ALL(): \r\n ${error}`)
            reject();
        }
    });
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-15 02:25:48

试试这个:

代码语言:javascript
复制
async function selectAll() {
    await  db.each("SELECT rowid AS id,* FROM requests", function (err, row) {
        console.log(row);
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56602443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档