我正在使用Nightwatch编写浏览器自动化.我遇到了Nightwatch命令的executeAsync功能问题.
executeAsync的 Nightwatch文档:
将一段JavaScript注入页面,以便在当前所选帧的上下文中执行.假定执行的脚本是异步的,并且评估脚本的结果将返回给客户端.
异步脚本命令可能不会跨页面加载.如果在等待脚本结果时触发了unload事件,则应将错误返回给客户端.
this.demoTest = function (browser) {
browser.executeAsync(function(data, done) {
someAsyncOperation(function() {
done(true);
});
}, [imagedata], function(result) {
// ...
});
};
Run Code Online (Sandbox Code Playgroud)
当Async任务完成时,将调用应该是函数的最后一个可选参数.
如何检查Async任务是否已开始执行?我想在浏览器执行异步任务的Javascript主体后立即执行某些操作.有没有办法找出executeAsync是否已开始在Nightwatch代码中执行?
我就是这样实现的。这看起来还好吗?
function useCallback(fn, deps) {
const [state, setState] = useState({ fn });
useEffect(() => {
setState({ fn });
}, deps);
return state.fn;
}
Run Code Online (Sandbox Code Playgroud)