【问题标题】:how to make quick.db read async如何使 quick.db 异步读取
【发布时间】:2021-09-24 06:41:03
【问题描述】:

我想让这个读取调用异步。它应该输出到控制台“完成”,然后“完成”。

但脚本首先等待完成循环。为什么它不起作用?

const db = require('quick.db');
 
var balance = null;
var items = null;

final();

console.log('finish');

async function final() {
    var res = await test();
    console.log('done');
}

async function test() {
    return new Promise((resolve, reject) => {
        for(var i=0; i<10000; i++) {
                balance = db.get('userInfo.balance') // -> 1000
                items =  db.get('userInfo.items') // ['Sword', 'Watch']
    }
    resolve(true);
    });
}

【问题讨论】:

    标签: node.js quick.db


    【解决方案1】:

    所以我刚刚复制并粘贴了您的代码,它的工作方式与您描述的一样。它打印“完成”,然后“完成”。我不确定你的问题是什么。但是,我对您的代码有一个疑问:为什么要使用 async 并隐式返回一个新的 Promise?

    除了上述之外,您还尝试从数据库中读取一些值,并且之前没有设置它们。我编辑了你的代码:

    const db = require('quick.db');
    
    var balance = null;
    var items = null;
    
    db.set('userInfo', { difficulty: 'Easy' });
    db.add('userInfo.balance', 1000);
    db.push('userInfo.items', 'Sword');
    db.push('userInfo.items', 'Watch');
    
    final();
    
    console.log('finish');
    
    async function final() {
        var res = await test();
        console.log(`Balance: ${balance} | Items: ${items}`);
        console.log('done');
    }
    
    async function test() {
        for (var i = 0; i < 10000; i++) {
            balance = db.get('userInfo.balance'); // -> 1000
            items = db.get('userInfo.items'); // ['Sword', 'Watch']
        }
    }

    它解决了你的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2018-11-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 2014-09-30
      相关资源
      最近更新 更多