Javascript Node.js | Express.js | Redis.io-处理订单
对于我的项目,我使用Node.js和express.js以及redis.io作为数据库。现在我有了一个带有查询参数的get资源。它应该给我图书馆的ID,里面有一本书。但是我不明白我的程序的处理顺序。正如您在下面的代码中所看到的,我在控制台上打印了3次库数组Javascript Node.js | Express.js | Redis.io-处理订单,javascript,node.js,express,redis,Javascript,Node.js,Express,Redis,对于我的项目,我使用Node.js和express.js以及redis.io作为数据库。现在我有了一个带有查询参数的get资源。它应该给我图书馆的ID,里面有一本书。但是我不明白我的程序的处理顺序。正如您在下面的代码中所看到的,我在控制台上打印了3次库数组 var express = require('express'); var bodyParser = require('body-parser'); var redis = require('redis'); var db = redis.
var express = require('express');
var bodyParser = require('body-parser');
var redis = require('redis');
var db = redis.createClient();
var jsonParser = bodyParser.json();
var app = express();
app.use(jsonParser);
app.get('/test', function (req, res) {
if (req.query.book != null) {
var book_id = req.query.book;
var libraries = [];
db.get('book:' + book_id, function (err, rep) {
var book = JSON.parse(rep);
var libs = book.libraries;
libs.forEach(function (val) {
libraries.push(val.id);
});
console.log("1.: " + libraries);
});
console.log("2.: " + libraries);
}
console.log("3.: " + libraries);
});
app.listen(1337);
这是我控制台中的结果:
2.:
3.:
1:1,4
有人能解释一下吗?为什么我的数组在第2点和第3点是emtpy?您的回调是异步执行的。第二个是日志,因为它在第三个之前的同步块中。第1个显示在最后,因为它是在从数据库获得结果后调用的,这是异步的,所以在代码的第2和第3部分之后。您的回调是异步执行的。第二个是日志,因为它在第三个之前的同步块中。第1个显示在最后,因为它是在从数据库获得结果后调用的,这是异步发生的,所以在代码的第2和第3部分之后