Tôi cho rằng mô-đun asyncjs bạn sử dụng là mô-đun được ghi lại tại:https://github.com/fjakobs/async.js
Trong mã của bạn:
- list () là một trình tạo. Nó cho phép lặp lại mảng bởi asyncjs. Mảng là một mảng các giá trị.
- call () là một trình ánh xạ gọi từng mặt hàng. Do đó, các mục phải có thể gọi được (tức là chúng phải được gọi lại).
- end () là một điểm kết thúc kết thúc, được gọi khi quá trình lặp kết thúc. Là một tham số, bạn chỉ nhận được giá trị cuối cùng của chuỗi (không phải toàn bộ chuỗi).
Bạn nhận được " [TypeError:Object true không có phương pháp nào 'áp dụng'] "do danh sách bạn đã tạo không phải là danh sách các lệnh gọi lại. Đây là danh sách các giá trị.
Đây là một số mã sẽ làm những gì bạn muốn:
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()
Xin lưu ý ở đây chúng tôi sử dụng map () thay vì call () và toArray () thay vì end ().