【发布时间】:2017-09-09 06:17:58
【问题描述】:
我有一个问题
这是我的自定义命令
client.addCommand('getBinaryImage', function (message) {
var self = this;
return self.execute(
function downloadImageBinary(url) {
var err = null;
var result = null;
function toDataURL(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
callback(reader.result);
};
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
toDataURL(url, function (dataUrl) {
alert('RESULT:' + dataUrl);
// Now return the result !!
});
}
);
});
我使用它如下
let chain = client
.url("https://stackoverflow")
.getBinaryImage("image url here")
.then((result) => {
console.log(result);
})
但正如您所见,脚本在浏览器端的执行是异步的。
问题是我需要按链顺序执行这个脚本同步,所以在结果没有准备好之前它不应该到达链中的then处理程序。
请建议如何实施?
【问题讨论】:
标签: javascript node.js asynchronous webdriver webdriver-io