我正在做一个简单的练习,以了解async.js如何与node.js一起使用。该计划将询问工作小时数和小时费率,并将它们相乘以得出总收入。
代码如下所示:
var async =require('async');
var rl = require('readline');
//variables
var horas=0;
var rate =0;
var sueldo =0;
//readline
var int=rl.createInterface({
input:process.stdin,
output:process.stdout
});
var items = [
{nombre: "worked hours", valor:horas},
{nombre:"hourly rate",valor:rate}
];
async.each(items,
function(item,callback)
{
int.question('Tell me your '+ item.nombre,function(data)
{
item.valor =Number(data);
callback(null);
});
},
function(err,results){
console.log(results);
});
我知道使用realine.question()可以实现同样的目的,但练习的目的是了解async.js的工作原理。
当我运行此代码时,只会调用集合中的第一个项目。无论我按Enter多少次,items数组中的第二项都不会被处理。我想我错过了一些非常基本的东西,但不知道是什么。有人可以帮忙吗?
答案 0 :(得分:0)
您需要在此使用async.eachSeries
代替async.each
,因为您希望问题一个接一个地发生,而不是同时发生:
async.eachSeries(items, function(item,callback) { ... }