gpt4 book ai didi

javascript - promise 永不兑现

转载 作者:行者123 更新时间:2023-11-30 12:55:03 26 4
gpt4 key购买 nike

以下代码永远不会命中控制台日志点“post4”或“post3”。它确实返回了 promise ,但如果我尝试从该 promise 链接起来,则永远不会遵循该链。

loginPage.prototype.doLogin = function(isGood){
var d = webdriver.promise.defer();
this.driver.findElement(webdriver.By.css('input.loginbutton')).click(function() {
if(isGood){
//return new statementPage;
console.log("post3")
d.fulfill(new statement.statementPage(this.driver));
} else {
console.log("post4")
d.fulfill(this);
}
});
console.log("post5")
return d.promise;
}

如果我调用 login.doLogin(true).then(function(){console.log("foo")}) 它永远不会记录 post3、post4 或 foo。

我在我的代码中的其他地方获得了其他成功运行的 promise ,所以我不明白为什么这不起作用。

最佳答案

webdriverjs 的 click 函数不接受任何参数/回调,因此您的函数从未运行过。 click 代码如下(来自 API ):

webdriver.WebElement.prototype.click = function() {
return this.schedule_(
new webdriver.Command(webdriver.CommandName.CLICK_ELEMENT),
'WebElement.click()');
};

这是一个 fiddle表明一个没有参数的 js 函数实际上并不使用该参数,除非用 arguments 变量指定。

使用 then element.click().then(function(){d.fulfill()}); 允许实现点击 promise ,然后运行您的代码。阅读 Webdriverjs Page 的 promise

关于javascript - promise 永不兑现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com