Supongo que el módulo asyncjs que usa es el que está documentado en:https://github.com/fjakobs/async.js
En tu código:
- list() es un generador. Permite que asyncjs itere la matriz. La matriz es una matriz de valores.
- call() es un mapeador que llama cada elemento. Por lo tanto, los elementos deben ser invocables (es decir, deben ser devoluciones de llamada).
- end() es un punto final de terminación, llamado cuando finaliza la iteración. Como parámetro, solo obtiene el último valor de la secuencia (no toda la secuencia).
Obtuviste el "[Error de tipo:el objeto verdadero no tiene método 'aplicar'] " error porque la lista que ha creado no es una lista de devoluciones de llamada. Es una lista de valores.
Aquí hay un código que debería hacer lo que quieras:
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()
Tenga en cuenta que aquí usamos map() en lugar de call() y toArray() en lugar de end().