Javascript 如果超过超时,则调用函数

Javascript 如果超过超时,则调用函数,javascript,web-scraping,phantomjs,nightmare,Javascript,Web Scraping,Phantomjs,Nightmare,使用噩梦EJS,如果超过waitTimeout限制,是否有方法调用函数?现在它给了我一个拒绝承诺的警告 UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: .wait() timed out after 10000msec 我想知道如果收到此错误,是否有方法调用函数。我的代码结构如下: var Nightmare = require('nightmare');

使用噩梦EJS,如果超过waitTimeout限制,是否有方法调用函数?现在它给了我一个拒绝承诺的警告

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: .wait() timed out after 10000msec
我想知道如果收到此错误,是否有方法调用函数。我的代码结构如下:

var Nightmare = require('nightmare');       
var nightmare = Nightmare({ show: true, waitTimeout: 10000});
nightmare.goto(my_url);
nightmare.wait(my_element);
nightmare.evaluate(function() {...});
nightmare.then(function(result) {...code that could give a promise warning...});

我可以在goto和then语句中添加catch子句(正如Belfordz建议的那样),这样做是可行的,但是then语句中还有其他嵌套的then语句。我更喜欢单个语句,它可以捕获抛出的任何承诺警告或超时错误

该错误意味着在延迟10秒内未在当前页面上找到
my_元素

但是,按照编码方式,您正在同步调用方法
goto
wait
evaluate
然后
,而它们应该由内部承诺机制调用,即通过“链接”调用,否则它们很快就会执行:

var Nightmare = require('nightmare');       
var nightmare = Nightmare({ show: true, waitTimeout: 10000});
nightmare.goto(my_url) // <-- don't end the statement here, continue the chain:
    .wait(my_element)
    .evaluate(function() {...})
    .then(function(result) {...});
var噩梦=require(“噩梦”);
var噩梦=噩梦({show:true,waitTimeout:10000});

goto(my_url)//听起来您只需要在承诺拒绝的内容中添加catch子句