Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请帮我解决JavaScript异步问题_Javascript_Asynchronous_Async Await - Fatal编程技术网

请帮我解决JavaScript异步问题

请帮我解决JavaScript异步问题,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我在connect.js中有这样的代码 const sqlite3 = require('sqlite3').verbose(); class Connection { static connect() { let db = new sqlite3.Database('../SQlite-tester-001/db/sqlite_tester001.db', sqlite3.OPEN_READWRITE, (err) => { if (err) {

我在connect.js中有这样的代码

const sqlite3 = require('sqlite3').verbose();

class Connection {

  static connect() {
    let db = new sqlite3.Database('../SQlite-tester-001/db/sqlite_tester001.db', sqlite3.OPEN_READWRITE, (err) => {
      if (err) {
        console.error(err.message);
      }
      else {
        console.log('Connected to the tester database.');
      }
    });

    return db
  }
}

module.exports = Connection;
const Connection = require('./connect');

(async () => {
    let db = await Connection.connect();
    await console.log('This line is below Connection.connect()');
})();

console.log('This line is below Async function');
我试着从insert.js这样调用它

const sqlite3 = require('sqlite3').verbose();

class Connection {

  static connect() {
    let db = new sqlite3.Database('../SQlite-tester-001/db/sqlite_tester001.db', sqlite3.OPEN_READWRITE, (err) => {
      if (err) {
        console.error(err.message);
      }
      else {
        console.log('Connected to the tester database.');
      }
    });

    return db
  }
}

module.exports = Connection;
const Connection = require('./connect');

(async () => {
    let db = await Connection.connect();
    await console.log('This line is below Connection.connect()');
})();

console.log('This line is below Async function');
然而,结果并不是我想要的

wittinunt@Wittinunt-VCIS-PC:~/GitHub/SQlite-tester-001$ node insert.js
This line is below Async function
This line is below Connection.connect()
Connected to the tester database.
我所期望的应该是这样的

Connected to the tester database.
This line is below Connection.connect()
This line is below Async function
我对JavaScript非常陌生,现在我对“异步等待”非常困惑


请帮助。

有回调/Promise/asny,等待处理异步的方法

在上面的代码中,callback和async/await在异步处理方法中重复使用

回调函数可以工作

因此,删除回调函数并运行。 [但是,该功能必须支持Promise]

const sqlite3 = require('sqlite3').verbose();

class Connection {
  static async connect() {
    try {
      let db = await new sqlite3.Database('../SQlite-tester-001/db/sqlite_tester001.db', sqlite3.OPEN_READWRITE);
      console.log('Connected to the tester database.');
    } catch (err) {
      console.error(err.message); 
    }
  }
}

module.exports = Connection;

如果出现错误,则“catch block”catch error。

您有2个异步函数和3个等待函数,但不需要它们。我已将它们全部删除,但结果相同。