Przypuszczam, że moduł asyncjs, którego używasz, jest udokumentowany pod adresem:https://github.com/fjakobs/async.js
W twoim kodzie:
- list() to generator. Pozwala na iterację tablicy przez asyncjs. Tablica jest tablicą wartości.
- call() to maper, który wywołuje każda sztuka. W związku z tym elementy muszą być wywoływane (tj. muszą być wywołaniami zwrotnymi).
- end() to końcowy punkt, wywoływany po zakończeniu iteracji. Jako parametr otrzymujesz tylko ostatnią wartość sekwencji (nie całą sekwencję).
Otrzymałeś „[TypeError:Object true ma metodę 'apply'] " błąd, ponieważ zbudowana lista nie jest listą wywołań zwrotnych. Jest to lista wartości.
Oto kod, który powinien zrobić to, co chcesz:
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()
Pamiętaj, że używamy map() zamiast call() i toArray() zamiast end().