使用しているasyncjsモジュールは、https://github.com/fjakobs/async.js
に記載されているモジュールだと思います。コード内:
- list()はジェネレーターです。これにより、配列をasyncjsで繰り返すことができます。配列は値の配列です。
- call()は、呼び出すマッパーです。 各項目。したがって、アイテムは呼び出し可能である必要があります(つまり、コールバックである必要があります)。
- end()は終了エンドポイントであり、反復が終了したときに呼び出されます。パラメータとして、シーケンスの最後の値のみを取得します(シーケンス全体ではありません)。
「[TypeError:Object true has no method'apply'] 「作成したリストがコールバックのリストではないため、エラーが発生しました。値のリストです。
これがあなたが望むことをするべきいくつかのコードです:
var redis = require("redis");
var client = redis.createClient();
var async = require("asyncjs");
function main() {
var siteId = 1;
async
.list(['x','y','z'])
.map( function (item,next) {
client.hincrby('traffic:' + siteId, item, 1, function (err,res) {
next(err,res)
})
})
.toArray( function(err,res) {
console.log(err);
console.log(res);
});
}
main()
ここでは、call()の代わりにmap()を使用し、end()の代わりにtoArray()を使用していることに注意してください。