如何在 javascript 中调用调用超过 50k 次的递归函数?
how can I call a recursive function that calls more than 50k times in javascript?
我知道浏览器 Javascript 堆栈大小限制,但有什么办法可以打破它吗?当我在网上阅读 Javascript Stack size limit 时,我找不到克服浏览器堆栈大小限制的方法。在 java-script 或 angular.
中有什么技巧可以做到吗
例如
var i=0;
rec(para);
function rec(para){
if(para>=50000){
}
else{
$scope.items.push(i);
rec(i++)
}
}
是否可以将 50000 个数据添加到一个数组中..
使用异步方式
function func1(n, callback)
{
//do some work
//check for exit condition
if (n == 1)
{
callback();// invoke callback handler and pass the results to it.
}
else
{
setTimeout(function(){
func1(); //call it again with modified parameters
});
}
}
一个缺点是您将无法再return此方法的值。
is it possible to add 50000 data into an array..
是的,通过迭代。在你的情况下,你只需要做
function rec()
{
for( var counter = 0; counter < 50000; counter++ )
{
$scope.items.push(counter);
}
}
如果您的环境允许,请尝试坚持使用本机 ES5/6 方法。您可以使用 fill
和 map
一步将巨大的连续数字序列添加到数组中:
// assuming $scope.items is already initialized array
$scope.items = $scope.items.concat((Array(50000).fill(0).map(function(e,i){return i})));
http://www.2ality.com/2013/11/initializing-arrays.html, Array.fill, Array.map.
我知道浏览器 Javascript 堆栈大小限制,但有什么办法可以打破它吗?当我在网上阅读 Javascript Stack size limit 时,我找不到克服浏览器堆栈大小限制的方法。在 java-script 或 angular.
例如
var i=0;
rec(para);
function rec(para){
if(para>=50000){
}
else{
$scope.items.push(i);
rec(i++)
}
}
是否可以将 50000 个数据添加到一个数组中..
使用异步方式
function func1(n, callback)
{
//do some work
//check for exit condition
if (n == 1)
{
callback();// invoke callback handler and pass the results to it.
}
else
{
setTimeout(function(){
func1(); //call it again with modified parameters
});
}
}
一个缺点是您将无法再return此方法的值。
is it possible to add 50000 data into an array..
是的,通过迭代。在你的情况下,你只需要做
function rec()
{
for( var counter = 0; counter < 50000; counter++ )
{
$scope.items.push(counter);
}
}
如果您的环境允许,请尝试坚持使用本机 ES5/6 方法。您可以使用 fill
和 map
一步将巨大的连续数字序列添加到数组中:
// assuming $scope.items is already initialized array
$scope.items = $scope.items.concat((Array(50000).fill(0).map(function(e,i){return i})));
http://www.2ality.com/2013/11/initializing-arrays.html, Array.fill, Array.map.