我尝试从这样的数据库请求中获取一个对象数组(我知道我应该使用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
。
为什么它什么都没有?
我现在已经阅读了几天关于回调和承诺但我仍然没有得到它。如果有人可以提供一个例子那就太好了。
答案 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);
});
});
}