大家好我有一个异步函数,我必须在异步结束时运行同步函数:
google.setOnLoadCallback(googlata);
function googlata(){
alert('hello');
}
function endgooglata(){
alert('i am synchronous');
}
我尝试将setInterval添加到同步功能中,显然它可以工作......但我不喜欢......
我想要一个更精确的方法 当然简单......
存在?
修改
我已经创建了jsfiddle,但显然不能直线工作,因为代码更复杂......所以我将解释它是如何工作的:
我有一个带有简单搜索栏的page.html,并通过“get”方法将数据发送到paginaX.html ...
在这是我的paginaX,有我的jsfiddle的代码......
当运行函数googlata()
时,根据栏中的研究,它会在div id="cse"
中创建一个页面结果。
我操纵网址并获取搜索到的关键字...
正确创建SERP。
问题出在哪里???
问题在于某些结果有图像而有些结果没有...而且我希望每个结果的描述性摘要与边距左边的距离相同......
然后具有图像的结果将为它们提供填充..
这种情况发生在“modifica()
”
但是如果未完全创建结果页面,则函数modifica()
将出现问题(使用图像填充结果)。因此,在modifica()
的末尾启动googlata ()
是绝对必要的。
SetInterval是一个非常糟糕的解决方案......因为有时googlata()
设置的时间超过1300毫秒,然后会产生其他错误......
这是JSFIDDLE:
我希望你现在可以帮助我......
答案 0 :(得分:2)
这应该有效:
编辑以便它向结束函数发送参数。
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);
}
答案 1 :(得分:0)
我解决了:D谢谢龙你让我想得更多....我会解释: 第一个有图像的td,像孩子一样有很多标签,但也标有“a”(里面会有标签图片)...当google创建serp时,也许所有td都被隐藏了,但结果将是一个图像,还有所有dom(也许图像会加载)。所以我改变了函数“modifica()”,并且我只为没有“a”标签作为子项的结果添加了paddding;)...
这是真的:
function googlata(){
//code....
modifica();
}
function modifica(){
//code....
}
这是更新jsfiddle:http://jsfiddle.net/2rg86vm6/1/
谢谢!