我试图用梦魇JS刮掉一个网页而被卡住了。
在我的程序中,我将链接上的数组传递给函数,我需要来自所有链接的相同数据
列表可能很长(超过60),如果我尝试做
async.each(Links, function (url, callback) {
var nightmare = Nightmare(size);
...
}
只有前几个实例实际上返回一个值,其他实例只是挂起并且不会加载(空白页面)。当我尝试只做三个时它完美地工作。
我该如何解决?我如何重新分配工作,例如三个并行,只有当它完成所有工作时才会进行下一组工作?还有一个想法可能是使用相同的实例并重复所有链接的步骤?
答案 0 :(得分:1)
有两种可能的解决方案:
使用public static function recursiveTrace (oObj:Object, sPrefix:String = ""):void
{
sPrefix == "" ? sPrefix = "---" : sPrefix += "---";
for (var i:* in oObj)
{
trace (sPrefix , i + " : " + oObj[i], " ");
if (typeof( oObj[i] ) == "object") recursiveTrace ( oObj[i], sPrefix); // around we go again
}
}
等待一个操作完成后再启动另一个操作。
或者在eachSeries
传递另一个参数,该参数限制了同时运行的操作数。