运行同步函数在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:

http://jsfiddle.net/2rg86vm6/

我希望你现在能帮助我...

这应该有效:

已编辑,因此它会向结束函数发送一个参数。

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/

谢谢!