87,910
社区成员
发帖
与我相关
我的任务
分享
//----------------------提取二级js文件集方法加强版开始----------------------// 把结果放进数组里,然后使用return返回
把结果放进数组里,然后使用return返回
[quote=引用 2 楼 bajie315 的回复:]1..程序上下文 决定了 执行后的结果 就是一个数组。所以不用放到数组里了。 2..直接用 fetch_second_js_urls_extend()方法return s_js_complete_global 变量出去?我在外部调用的时候会出错。会提示这个变量s_js_complete_global 未定义 undefined!死活都是未定义。 3..后来我试了下发现是 setTimeout的 问题...因为 执行 Done() 的时间是在调用 fetch_second_js_urls_extend() 以后的某个时间。这中间还要执行 Process(dataitem) 方法。而这个 Process(dataitem) 方法要处理大量数据。占用了大量时间。 4..总体调用情况如下: fetch_second_js_urls_extend(){ //--源数据是 播放页面地址集--// var data = arr_keywords_js_in; //--单个任务处理进程--// function Process(dataitem){ ....... } //--回调函数.处理完成后去重补全,打印,返回二级js文件集结果--// function Done(){ ....... return s_js_complete_global; } //----计时处理程序,防浏览器假死方法----// function ProcessArray(data,handler,callback){ ..... } //最后执行防假死方法 ProcessArray(data, Process, Done); } 以上可以看出当我调用 fetch_second_js_urls_extend()方法时。内部要花很多时间处理Process(dataitem)。最后才处理Done(),也就是 return s_js_complete_global; 5..比如我在外部这样写: fetch_second_js_urls_extend(); alert(s_js_complete_global );//undefined 结果就是 undefined。 我分析了下函数内部还在延时的时候 就调用到了 alert(s_js_complete_global ); 此时s_js_complete_global 还没有被正确赋值。 自然就是空的数组了,没有数据。达不到目的。 6..最后我发现了问题所在: 当我这样写: setTimeout(function(){ alert(s_js_complete_global ); },6000); 是可以得到预期结果的。 7..那么问题来了。 我如何才能设置 那个 6000 毫秒延时,而又不耽误我尽快得到正确结果呢?我当然可以设置1分钟 2分钟 10分钟。但是我不打算浪费时间。把那个6000毫秒设置成刚刚 程序处理完毕 給s_js_complete_global 赋值后 就马上调用这个 s_js_complete_global 的那个延时时间。我不知道如何获取到那个时间。 将执行后的结果放到数组里return回去?
[quote=引用 3 楼 KK3K2005 的回复:] [quote=引用 2 楼 bajie315 的回复:]1..程序上下文 决定了 执行后的结果 就是一个数组。所以不用放到数组里了。 2..直接用 fetch_second_js_urls_extend()方法return s_js_complete_global 变量出去?我在外部调用的时候会出错。会提示这个变量s_js_complete_global 未定义 undefined!死活都是未定义。 3..后来我试了下发现是 setTimeout的 问题...因为 执行 Done() 的时间是在调用 fetch_second_js_urls_extend() 以后的某个时间。这中间还要执行 Process(dataitem) 方法。而这个 Process(dataitem) 方法要处理大量数据。占用了大量时间。 4..总体调用情况如下: fetch_second_js_urls_extend(){ //--源数据是 播放页面地址集--// var data = arr_keywords_js_in; //--单个任务处理进程--// function Process(dataitem){ ....... } //--回调函数.处理完成后去重补全,打印,返回二级js文件集结果--// function Done(){ ....... return s_js_complete_global; } //----计时处理程序,防浏览器假死方法----// function ProcessArray(data,handler,callback){ ..... } //最后执行防假死方法 ProcessArray(data, Process, Done); } 以上可以看出当我调用 fetch_second_js_urls_extend()方法时。内部要花很多时间处理Process(dataitem)。最后才处理Done(),也就是 return s_js_complete_global; 5..比如我在外部这样写: fetch_second_js_urls_extend(); alert(s_js_complete_global );//undefined 结果就是 undefined。 我分析了下函数内部还在延时的时候 就调用到了 alert(s_js_complete_global ); 此时s_js_complete_global 还没有被正确赋值。 自然就是空的数组了,没有数据。达不到目的。 6..最后我发现了问题所在: 当我这样写: setTimeout(function(){ alert(s_js_complete_global ); },6000); 是可以得到预期结果的。 7..那么问题来了。 我如何才能设置 那个 6000 毫秒延时,而又不耽误我尽快得到正确结果呢?我当然可以设置1分钟 2分钟 10分钟。但是我不打算浪费时间。把那个6000毫秒设置成刚刚 程序处理完毕 給s_js_complete_global 赋值后 就马上调用这个 s_js_complete_global 的那个延时时间。我不知道如何获取到那个时间。 将执行后的结果放到数组里return回去?
[quote=引用 2 楼 bajie315 的回复:]1..程序上下文 决定了 执行后的结果 就是一个数组。所以不用放到数组里了。 2..直接用 fetch_second_js_urls_extend()方法return s_js_complete_global 变量出去?我在外部调用的时候会出错。会提示这个变量s_js_complete_global 未定义 undefined!死活都是未定义。 3..后来我试了下发现是 setTimeout的 问题...因为 执行 Done() 的时间是在调用 fetch_second_js_urls_extend() 以后的某个时间。这中间还要执行 Process(dataitem) 方法。而这个 Process(dataitem) 方法要处理大量数据。占用了大量时间。 4..总体调用情况如下: fetch_second_js_urls_extend(){ //--源数据是 播放页面地址集--// var data = arr_keywords_js_in; //--单个任务处理进程--// function Process(dataitem){ ....... } //--回调函数.处理完成后去重补全,打印,返回二级js文件集结果--// function Done(){ ....... return s_js_complete_global; } //----计时处理程序,防浏览器假死方法----// function ProcessArray(data,handler,callback){ ..... } //最后执行防假死方法 ProcessArray(data, Process, Done); } 以上可以看出当我调用 fetch_second_js_urls_extend()方法时。内部要花很多时间处理Process(dataitem)。最后才处理Done(),也就是 return s_js_complete_global; 5..比如我在外部这样写: fetch_second_js_urls_extend(); alert(s_js_complete_global );//undefined 结果就是 undefined。 我分析了下函数内部还在延时的时候 就调用到了 alert(s_js_complete_global ); 此时s_js_complete_global 还没有被正确赋值。 自然就是空的数组了,没有数据。达不到目的。 6..最后我发现了问题所在: 当我这样写: setTimeout(function(){ alert(s_js_complete_global ); },6000); 是可以得到预期结果的。 7..那么问题来了。 我如何才能设置 那个 6000 毫秒延时,而又不耽误我尽快得到正确结果呢?我当然可以设置1分钟 2分钟 10分钟。但是我不打算浪费时间。把那个6000毫秒设置成刚刚 程序处理完毕 給s_js_complete_global 赋值后 就马上调用这个 s_js_complete_global 的那个延时时间。我不知道如何获取到那个时间。 将执行后的结果放到数组里return回去?
1..程序上下文 决定了 执行后的结果 就是一个数组。所以不用放到数组里了。 2..直接用 fetch_second_js_urls_extend()方法return s_js_complete_global 变量出去?我在外部调用的时候会出错。会提示这个变量s_js_complete_global 未定义 undefined!死活都是未定义。 3..后来我试了下发现是 setTimeout的 问题...因为 执行 Done() 的时间是在调用 fetch_second_js_urls_extend() 以后的某个时间。这中间还要执行 Process(dataitem) 方法。而这个 Process(dataitem) 方法要处理大量数据。占用了大量时间。 4..总体调用情况如下: fetch_second_js_urls_extend(){ //--源数据是 播放页面地址集--// var data = arr_keywords_js_in; //--单个任务处理进程--// function Process(dataitem){ ....... } //--回调函数.处理完成后去重补全,打印,返回二级js文件集结果--// function Done(){ ....... return s_js_complete_global; } //----计时处理程序,防浏览器假死方法----// function ProcessArray(data,handler,callback){ ..... } //最后执行防假死方法 ProcessArray(data, Process, Done); } 以上可以看出当我调用 fetch_second_js_urls_extend()方法时。内部要花很多时间处理Process(dataitem)。最后才处理Done(),也就是 return s_js_complete_global; 5..比如我在外部这样写: fetch_second_js_urls_extend(); alert(s_js_complete_global );//undefined 结果就是 undefined。 我分析了下函数内部还在延时的时候 就调用到了 alert(s_js_complete_global ); 此时s_js_complete_global 还没有被正确赋值。 自然就是空的数组了,没有数据。达不到目的。 6..最后我发现了问题所在: 当我这样写: setTimeout(function(){ alert(s_js_complete_global ); },6000); 是可以得到预期结果的。 7..那么问题来了。 我如何才能设置 那个 6000 毫秒延时,而又不耽误我尽快得到正确结果呢?我当然可以设置1分钟 2分钟 10分钟。但是我不打算浪费时间。把那个6000毫秒设置成刚刚 程序处理完毕 給s_js_complete_global 赋值后 就马上调用这个 s_js_complete_global 的那个延时时间。我不知道如何获取到那个时间。 将执行后的结果放到数组里return回去?
将执行后的结果放到数组里return回去?