53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/ferrum/frame/runtime.rb', line 53
def evaluate_async(expression, wait, *args)
template = <<~JS
function() {
return new Promise((__f, __r) => {
try {
arguments[arguments.length] = r => __f(r);
arguments.length = arguments.length + 1;
setTimeout(() => __r(new Error("timed out promise")), %s);
%s
} catch(error) {
__r(error);
}
});
}
JS
expression = template % [wait * 1000, expression]
call(expression: expression, arguments: args, awaitPromise: true)
end
|