我正在使用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)); });
答案 0 :(得分:0)
let client = SQLClient.sharedInstance() as! SQLClient
的回调将同时收到您运行的脚本的最后评估值。
您不能等待异步事件(executeScript
是)。
您最好的选择是使用chrome.runtime.sendMessage
向我们发送数据。