Saya kira modul asyncjs yang Anda gunakan adalah yang didokumentasikan di:https://github.com/fjakobs/async.js
Dalam kode Anda:
- daftar() adalah generator. Ini memungkinkan array untuk diulang oleh asyncjs. Array adalah array nilai.
- call() adalah mapper yang memanggil setiap item. Oleh karena itu, item harus dapat dipanggil (yaitu, harus berupa panggilan balik).
- end() adalah titik akhir terminasi, dipanggil saat iterasi selesai. Sebagai parameter, Anda hanya mendapatkan nilai terakhir dari urutan (bukan seluruh urutan).
Anda mendapatkan "[TypeError:Object true has no method 'apply'] " kesalahan karena daftar yang Anda buat bukanlah daftar panggilan balik. Ini adalah daftar nilai.
Berikut adalah beberapa kode yang harus melakukan apa yang Anda inginkan:
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()
Harap dicatat di sini kami menggunakan map() sebagai ganti call(), dan toArray() sebagai ganti end().