运行同步函数在JavaScript中的异步函数结束?
Run synchronous function at the end of an asynchronous function in JavaScript?
大家好,我有一个异步函数,我必须 运行 在异步结束时使用同步函数:
google.setOnLoadCallback(googlata);
function googlata(){
alert('hello');
}
function endgooglata(){
alert('i am synchronous');
}
我尝试将 setInterval 添加到同步函数中,显然它有效...但我不喜欢...
我想要更精确的方法
当然也很简单...
存在吗?
编辑
我已经创建了 jsfiddle,但显然不能直线工作,因为代码更复杂......所以我将解释它是如何工作的:
我有一个带有简单搜索栏的 page.html 并通过 "get" 方法将数据发送到 paginaX.html ...
在 This is my paginaX 中有我的 jsfiddle 代码....
当函数googlata()
为运行时,它在div中创建了一个页面结果id="cse"
根据在吧里进行的研究
我操纵 URL 并获取搜索的关键字...
正确创建了 SERP。
问题出在哪里???
问题是有些结果有图像而有些没有...我希望每个结果的描述性摘要与 margin-left 的距离相同...
然后有图像的结果会给他们填充..
这发生在“modifica()
”
但是如果结果页面没有完全创建,函数 modifica()
就会出现问题(用图像填充结果)。所以绝对有必要在 googlata ()
结束时启动 modifica()
。
SetInterval 是一个非常糟糕的解决方案...因为有时 googlata()
使用超过 1300 毫秒的设置,然后它会产生其他错误...
这是 JSFIDDLE:
我希望你现在能帮助我...
这应该有效:
已编辑,因此它会向结束函数发送一个参数。
function endgooglata(data){
alert('i am synchronous');
// code to process data
}
google.setOnLoadCallback(googlata);
function googlata(){
alert('hello');
var generatedSERP = "A new thing generated in googlata()";
endgooglata(generatedSERP);
}
我解决了:D 谢谢 Dragon 你让我想得更多....我会解释:
第一个有图像的 td,像 children 很多标签,还有标签 "a"(里面会有标签图像)...当 google 创建 serp 时,也许所有 td 都是隐藏的,但是结果将是一个图像,但所有 dom (可能会加载图像)。所以我更改函数 "modifica()",并且我只为没有 "a" 标记的结果添加填充 children ;) ...
这是真的:
function googlata(){
//code....
modifica();
}
function modifica(){
//code....
}
这是更新 jsfiddle:http://jsfiddle.net/2rg86vm6/1/
谢谢!
大家好,我有一个异步函数,我必须 运行 在异步结束时使用同步函数:
google.setOnLoadCallback(googlata);
function googlata(){
alert('hello');
}
function endgooglata(){
alert('i am synchronous');
}
我尝试将 setInterval 添加到同步函数中,显然它有效...但我不喜欢...
我想要更精确的方法 当然也很简单...
存在吗?
编辑
我已经创建了 jsfiddle,但显然不能直线工作,因为代码更复杂......所以我将解释它是如何工作的:
我有一个带有简单搜索栏的 page.html 并通过 "get" 方法将数据发送到 paginaX.html ...
在 This is my paginaX 中有我的 jsfiddle 代码....
当函数googlata()
为运行时,它在div中创建了一个页面结果id="cse"
根据在吧里进行的研究
我操纵 URL 并获取搜索的关键字...
正确创建了 SERP。
问题出在哪里???
问题是有些结果有图像而有些没有...我希望每个结果的描述性摘要与 margin-left 的距离相同...
然后有图像的结果会给他们填充..
这发生在“modifica()
”
但是如果结果页面没有完全创建,函数 modifica()
就会出现问题(用图像填充结果)。所以绝对有必要在 googlata ()
结束时启动 modifica()
。
SetInterval 是一个非常糟糕的解决方案...因为有时 googlata()
使用超过 1300 毫秒的设置,然后它会产生其他错误...
这是 JSFIDDLE:
我希望你现在能帮助我...
这应该有效:
已编辑,因此它会向结束函数发送一个参数。
function endgooglata(data){
alert('i am synchronous');
// code to process data
}
google.setOnLoadCallback(googlata);
function googlata(){
alert('hello');
var generatedSERP = "A new thing generated in googlata()";
endgooglata(generatedSERP);
}
我解决了:D 谢谢 Dragon 你让我想得更多....我会解释: 第一个有图像的 td,像 children 很多标签,还有标签 "a"(里面会有标签图像)...当 google 创建 serp 时,也许所有 td 都是隐藏的,但是结果将是一个图像,但所有 dom (可能会加载图像)。所以我更改函数 "modifica()",并且我只为没有 "a" 标记的结果添加填充 children ;) ...
这是真的:
function googlata(){
//code....
modifica();
}
function modifica(){
//code....
}
这是更新 jsfiddle:http://jsfiddle.net/2rg86vm6/1/
谢谢!