gpt4 book ai didi

Javascript 自调用函数问题 (Behat/Mink/Sahi)

转载 作者:行者123 更新时间:2023-12-02 18:38:27 26 4
gpt4 key购买 nike

我目前不知道为什么会发生这种情况,但如果我偏离了方向,或者错过了一件小事,我也不会感到惊讶。

这是我的代码:

(function() { 
if (jQuery('section.news-feed ul li').text().length > 0) {
var length1 = parseInt(jQuery('section.news-feed ul li').text().length);
var length2 = 0;

setTimeout(function() {
length2 = parseInt(jQuery('section.news-feed ul li').text().length);

if (length1 !== length2) {
return true;
}
else {
return false;
}

}, 3000);
}
else {
return false;
}
})()

我正在寻找 bool 返回值,尽管我收到“未定义”。jQuery 特定选择器是正确的,并且我正确找到了 length1 和 length2。

为了进一步添加问题,以防有人具有 Behat/Mink/Sahi 经验,这就是我想要做的:

行为:

@javascript
Scenario: News ticker is moving
Given I am on the homepage
Then I should see the news ticker "section.news-feed ul li" move

上下文:

/**
* @Then /^I should see the news ticker "([^"]*)" move$/
*/
public function iShouldSeeTheNewsTickerMove($element) {
$result = $this
->getSession()
->evaluateScript("
(function() {
if (jQuery('" . $element . "').text().length > 0) {
var length1 = parseInt(jQuery('" . $element . "').text().length);
var length2;

setTimeout(function() {
var length2 = parseInt(jQuery('" . $element . "').text().length);

if (length1 !== length2) {
return true;
}
else {
return false;
}

}, 3000);
}
else {
return false;
}
})()
");

echo "Result: " . $result;

if ($result === 'false') {
throw new Exception (
"The newws ticker doesn't seem to be ticking."
);
}

}

最佳答案

当您的 if block 计算结果为 true 时,您的顶级匿名函数不会返回任何值。您安排一个函数在一段时间后运行,然后就是这样。您计划运行的函数始终返回 bool 值,但您的顶级匿名函数不会。

由于您已经在使用 jQuery,我建议使用它的 Deferred功能来解决您的问题。简而言之,您的顶级函数将返回一个它将完成某些工作的 promise ,而不是 bool 值(或未定义!:)。当 promise 兑现时,无论是立即实现还是在调用 setTimeout() 运行之后,您都保证有一个 bool 值在等待您。

(function() {
function foo() {
var deferred = $.Deferred();

if (jQuery('section.news-feed ul li').text().length > 0) {
var length1 = parseInt(jQuery('section.news-feed ul li').text().length);
var length2 = 0;

setTimeout(function() {
length2 = parseInt(jQuery('section.news-feed ul li').text().length);

if (length1 !== length2) {
//return true;
deferred.resolve(true);
}
else {
//return false;
deferred.resolve(false);
}

}, 3000);
}
else {
//return false;
deferred.resolve(false);
}

return (deferred.promise());
}

foo().done(function(myBoolean) {
alert(myBoolean);
});
})()

关于Javascript 自调用函数问题 (Behat/Mink/Sahi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072879/

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