nodejsで同期性を強制する方法を理解しようとしてきましたが、ほとんどの試みで失敗しました。
たとえば、このコード:
var r = require('request');
var a = require('async');
var hello = function (cb) {
console.log('Hello from 1!');
cb();
}
var random = function (cb) {
console.log(Math.floor(Math.random() * 10));
cb();
}
var google = function (cb) {
r('http://google.com', function (err, res, body) {
console.log(res.statusCode);
});
cb();
}
var bye = function (cb) {
console.log('Bye from 3!');
cb();
}
a.series([hello, google, random, bye], function () {
console.log('done');
});
これは期待どおりに機能しません。私のすべての試行で、Google からの応答コードは常に最後に来ます。
Hello from 1!
7
Bye from 3!
done
200
モジュールを使用するかどうかに関係なく、これらの関数を 1 つずつ順番に実行するにはどうすればよいですか?