在JavaScript中的异步函数结束处运行同步函数?
好家伙我有一个异步函数,我必须在异步结束时运行同步功能:在JavaScript中的异步函数结束处运行同步函数?
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"
中创建一个页面结果。
我操纵URL和提取的关键字搜索...
的SERP正确创建。
问题在哪里???
的问题是,一些成果具有图像和一些不......,我想每个结果的描述摘要是从利润率左...
然后将结果相同距离有图像会给他们的填充..
这种情况发生在“modifica()
”
但如果结果页面没有完全建立,功能modifica()
意志的问题(给填充与图像的结果)。所以在googlata()
的末尾推出modifica()
是绝对必要的。
的setInterval是一个非常糟糕的解决方案...因为有时googlata()
员工超过1300毫秒集,然后它会创建其他错误...
THIS IS的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谢谢龙你让我想得更多....我会解释: 第一个td有一个图像,有像儿童很多标签,但也标记“a”(内部会有标签图像)...当谷歌创建serp,也许所有td都隐藏,但结果将是一个图像,还有所有dom(也许图像会加载)。所以我改变功能“modifica()”,和我添加paddding仅适用于没有“一”的标签儿童结果;)...
所以是真实的:
function googlata(){
//code....
modifica();
}
function modifica(){
//code....
}
这是更新jsfiddle:http://jsfiddle.net/2rg86vm6/1/
谢谢!
函数googlata(回调){ 返回函数(){ alert('hello'); callback(); } } google.setOnLoadCallback(googlata(endgooglata));'回答你的问题? – tforgione
你的意思是主线程等待行动结束? – Pablo
@DragonRock我不明白...请尽可能用一个例子写一个答案 – Borja