我的函数没有返回任何内容,或者我是否将错误分配给变量?

时间:2018-02-01 08:27:48

标签: node.js sqlite

我尝试从这样的数据库请求中获取一个对象数组(我知道我应该使用promise或callback来执行此操作,但同时我希望使用此超时解决方法):

var theArray = sql.getArray(id);

setTimeout(function() {
   console.log(theArray);
}, 5000);

getArray: function(ID) {
   var array = [];
   db.each(`SELECT * FROM table WHERE ID = ?`, ID, (err, row) => {
      array.push(row)
   });

   setTimeout(function() {
      return array;
   }, 1000);
}

在返回部分附近的getArray函数中,数组包含数据但在日志记录函数中我得到undefined

为什么它什么都没有?

我现在已经阅读了几天关于回调和承诺但我仍然没有得到它。如果有人可以提供一个例子那就太好了。

1 个答案:

答案 0 :(得分:0)

您没有从getArray函数返回任何内容。因此,它返回undefined

<强>更新

您需要使用promises来获取价值。请参阅以下示例:

getArray: function(ID) {
    return new Promise(function (resolve, reject) {
        db.all(`SELECT * FROM table WHERE ID = ?`, ID, (err, rows) => {
            if (err) {
                return reject(err);
            }

            return resolve(rows);
        });
    });
}