在 node js 的 promise 中停止 while 循环
stop while loop inside a promise in node js
我正在解决一个问题,我必须为用户生成一个唯一的 ID,但我无法弄清楚如何打破 Promise.Following 函数内的 while 循环会发现用户是否同样 ref_id 存在与否,然后 return 我一个坚定的承诺。
function makeRefId() {
return new Promise(function(resolve , reject){
var refId = null;
var flag = true;
var tempUser ;
do{
refId = randomId(); //this will return a random string
console.log(refId);
tempUser = User.findOneAsync({ref_id:refId}).then(function(user){
if(user == null)
{
flag = false;
resolve(refId);
}
});
}while(flag);
});
}
我会为此使用递归函数。 While 循环不能很好地与 promises 混合,因为它们是异步的。
function makeRefId() {
const refId = randomId();
return User.findOneAsync({ ref_id: refId }).then((user) => {
if (!user) {
return refId;
} else {
return makeRefId();
}
});
}
然后您可以这样使用它:
makeRefId().then(refId => {
// Do whatever with refId
});
我正在解决一个问题,我必须为用户生成一个唯一的 ID,但我无法弄清楚如何打破 Promise.Following 函数内的 while 循环会发现用户是否同样 ref_id 存在与否,然后 return 我一个坚定的承诺。
function makeRefId() {
return new Promise(function(resolve , reject){
var refId = null;
var flag = true;
var tempUser ;
do{
refId = randomId(); //this will return a random string
console.log(refId);
tempUser = User.findOneAsync({ref_id:refId}).then(function(user){
if(user == null)
{
flag = false;
resolve(refId);
}
});
}while(flag);
});
}
我会为此使用递归函数。 While 循环不能很好地与 promises 混合,因为它们是异步的。
function makeRefId() {
const refId = randomId();
return User.findOneAsync({ ref_id: refId }).then((user) => {
if (!user) {
return refId;
} else {
return makeRefId();
}
});
}
然后您可以这样使用它:
makeRefId().then(refId => {
// Do whatever with refId
});