Ik veronderstel dat de asyncjs-module die u gebruikt, degene is die is gedocumenteerd op:https://github.com/fjakobs/async.js
In je code:
- list() is een generator. Hiermee kan de array worden herhaald door asyncjs. De array is een array van waarden.
- call() is een mapper die aanroept elk voorwerp. De items moeten daarom opvraagbaar zijn (d.w.z. het moeten callbacks zijn).
- end() is een eindpunt dat wordt aangeroepen als de iteratie voorbij is. Als parameter krijgt u alleen de laatste waarde van de reeks (niet de hele reeks).
Je hebt de "[TypeError:Object true has no method 'apply'] " fout omdat de lijst die u hebt gemaakt geen lijst met terugbelverzoeken is. Het is een lijst met waarden.
Hier is wat code die zou moeten doen wat je wilt:
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()
Houd er rekening mee dat we hier map() gebruiken in plaats van call(), en toArray() in plaats van end().