Jeg formoder, at det asyncjs-modul, du bruger, er det, der er dokumenteret på:https://github.com/fjakobs/async.js
I din kode:
- list() er en generator. Det tillader arrayet at blive itereret af asyncjs. Matrixen er en matrix af værdier.
- call() er en mapper, som kalder hver vare. Varerne skal derfor kunne kaldes (dvs. de skal være tilbagekald).
- end() er et termineringsslutpunkt, kaldet når iterationen er slut. Som parameter får du kun den sidste værdi af sekvensen (ikke hele sekvensen).
Du har "[TypeError:Object true has no method 'apply'] " fejl, fordi den liste, du har bygget, ikke er en liste over tilbagekald. Det er en liste over værdier.
Her er noget kode, som skal gøre, hvad du vil:
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()
Bemærk venligst, at vi her bruger map() i stedet for call(), og toArray() i stedet for end().