Chrome应用程序使用setTimeout执行executeScript,回调不等待

时间:2016-03-05 20:11:20

标签: javascript settimeout google-chrome-app

我正在使用Chrome应用,我遇到了一个问题:

我首先在file.js打开的网站中注入<webview>

在这个file.js中我有一个函数,它在setTimeout中执行返回值。

问题是当我使用executeScript调用该函数时,回调不会等待setTimeout的结束,并返回null

有人可以告诉我我该怎么办?谢谢!

(没有setTimeout,它返回预期值)

//content of file.js
function foo(){
  setTimeout(function (){ return {key:"value"}; }, 5000);
}

//I inject the file.js in the website
webview.executeScript({file:"file.js"}, function(result){ console.log(result); });

//I call foo() in the website
webview.executeScript( {code:"foo();"}, function(result){ console.log(JSON.stringify(result)); });

1 个答案:

答案 0 :(得分:0)

let client = SQLClient.sharedInstance() as! SQLClient 的回调将同时收到您运行的脚本的最后评估值。

您不能等待异步事件(executeScript是)。

您最好的选择是使用chrome.runtime.sendMessage向我们发送数据。