在JavaScript中等待函数完成
Waiting for functions to complete in JavaScript
为什么下面的代码每次都生成不同的输出(不是因为随机函数),但它对某些值给出了未定义,有时是其他一些值。有什么问题吗?
function getRandom(ubound) {
return Math.floor((Math.random()*10) % ubound);
}
function getInterval() {
var interval = [getRandom(10), getRandom(10)];
if(interval[1] >= interval[0])
return interval;
else
getInterval();
}
function generateIntervals() {
for(var i = 0; i < n; i++)
intervals[i] = getInterval();
}
function printIntervals() {
for(var i = 0; i < n; i++)
console.log("Node " + (i + 1) + ": " + intervals[i]);
}
generateIntervals();
printIntervals();
得到如下输出:
Node 1: 0,9
Node 2: 0,3
Node 3: undefined
Node 4: 2,2
或
Node 1: 3,3
Node 2: 3,3
Node 3: 1,8
Node 4: undefined
递归函数中缺少return
:
if(interval[1] >= interval[0])
return interval;
else
return getInterval();
// ^^^^^^
虽然我个人只是交换两个值,而不是使用递归。=]
if(interval[1] >= interval[0])
return interval;
else
return [interval[1], interval[0]];
或者更简单的/语义使用Array.reverse()
:
if(interval[1] < interval[0])
interval.reverse();
return interval;
小提琴
相关文章:
- 如何在jqGrid中使saveRow函数等待editRow函数
- 让 JavaScript 函数等待 Jquery 对话框模态的结果
- 如何在函数完成后使用 jQuery 进行动画处理 - 让第二个函数等待
- 如何使函数等待回调完成
- 让jquery函数等待它'的上一个呼叫已解决
- Javascript/jQuery使函数等待回调后再继续
- 让一个函数等待另一个变量
- 如何强制异步函数等待,直到完成
- 使函数等待/暂停;直到另一个结束
- 需要函数等待事件处理程序完成后再执行下一个函数
- Javascript函数等待另一个函数完成
- Javascript:让函数等待查询完成
- 我需要把'return'casper.then'块,让父函数等待子函数完成执行
- 使函数等待直到元素存在
- 美元.Ajax成功函数等待
- 如何让我的javascript函数等待html元素渲染
- 如何强制函数等待某个事件发生
- javascript/jquery:迭代调用函数;等待之前的通话结束
- 如何让JS函数等待执行
- 如何让NodeJs函数等待