CNode

async 中的whilst问题

问答
Kkingzez发布于11 年前最后回复11 年前8 回复7891 浏览0 收藏

没有循环,只是按顺序走了一边,直接输出了,我想知道错在哪里,请帮我看一下,谢谢

var async =require('async'),
	count = 0;
	list = [{name:'jack',age:20}, {name:'Lucy',age:18}];
async.whilst(
	function () {return count < list.length;},
	function (callback) {
		console.log(count);
		callback(list[count].age += 1);
		count ++;
 	},
	function(err){
		console.log(err);
	}	
);
console.log(list);
console.log(count);
查看回复

回复 (8)

W
wewea#1·11 年前

callback 第一参数是error?, 你看最后打印error的地方是不是你在callback传的值, whilst是不是一callback就结束的? 你再看看文档.

K
kingzez#2·11 年前
引用 weweacallback 第一参数是error?, 你看最后打印error的地方是不是你在callback传的值, whilst是不是一callback就结束的? 你再看看文档.

@wewea 打印出来是没有错误的,这是结果

0
21
[ { name: 'jack', age: 21 }, { name: 'Lucy', age: 18 } ]
1
W
wfsovereign#3·11 年前

楼主琢磨琢磨,看这是不是你想要的结果

async.whilst(
	function() {
		return count < list.length;
	},
	function(callback) {
		console.log('count: ');
		console.log(count);
		if (count < list.length) 	list[count].age += 1
		count++;
		callback();
	},
	function(err) {
		console.log('err:');
		console.log(err);
	}
);
B
blackjack#4·11 年前

count++的位置放到callback上一行

L
leiwei1991#5·11 年前

callback(list[count].age += 1); 这个回调传了 最后一个function function(err){ console.log(err); } 这个err 就是 list[count].age += 1 所以你会打印出 21

D
dayuoba#6·11 年前
var async =require('async');
var count = 0;
var list = [
	{name:'jack',age:20}, 
	{name:'Lucy',age:18}
];

async.whilst(
	function breaker () {
		return count < list.length;
	},
	function iterator (callback) {
		console.log(count);
		callback(null, list[count++].age += 1);
 	},
	function(err){
		console.log(err);
	}	
);

console.log(count);
console.log(list);


K
kingzez#7·11 年前
引用 blackjackcount++的位置放到callback上一行

@blackjack 谢谢 已经解决了

K
kingzez#8·11 年前
引用 dayuoba

@dayuoba thanks 受教了 :)

参与回复
登录后即可参与回复。登录