【发布时间】:2013-08-04 05:36:36
【问题描述】:
根据上一个问题 Illegal break statement (Node.js) 的建议,我实现了 async.whilst(),但它不会重复多次。
我正在尝试通过在 ID 末尾增加一个数字并查询 Mongo 以查看该 ID 是否存在来查找唯一 ID。如果不存在,则找到唯一 ID。它只循环一次,而不是直到找到唯一的。怎么了?
代码:
var uniqueNumber = 1;
var newUnique;
async.whilst(
function () {
var uniqueNum_string = uniqueNumber.toString();
newUnique = data.id + uniqueNum_string;
db.collection('landmarks').findOne({'id':newUnique}, function(err, data){
if (data){
console.log('entry found!');
return;
}
else {
console.log('entry not found!');
}
});
},
function (callback) {
uniqueNumber++;
},
function (err) {
saveLandmark(newUnique);
}
);
【问题讨论】:
-
我相信你必须在 "entry not found" else 语句中返回 true 才能再次循环。
-
你不能真正使用while,因为测试功能应该是同步的。您还必须在迭代器中实际调用回调。
-
好点@AndreasHultgren。我完全忽略了这一点。
-
那么应该如何迭代呢? @AndreasHultgren
-
@jrbaldwinn 等一下我会发布答案
标签: javascript node.js asynchronous node-async