我得到了一個json對象數組,其中包含「USERS」列表。我使用用於循環,然後調用另一個函數的用戶javascript中的for循環內的函數獲取第二個值而不是第一個值
//Check for User if already existed or not
queryUserEmail = function(User){
return emailQueryElement.sendKeys(User,protractor.Key.ENTER).then(function(){
return usersListElement.all(by.css('.shortHand')).getText().then(function(text){
if(text.toString().indexOf(User)!=-1){
return true;
}else{
return false
};
});
});
};
this.createUser = function(userArray){
for(var userI=0;userI<userArray.length;++userI){
var UserEmail = userArray[userI].UserEmail;
logger.info('UserEmail outside function::'+UserEmail);
queryUserEmail(UserEmail).then(function(checkFlag){
logger.info('UserEmail inside funtion::'+UserEmail);
});
};
};
和用戶陣列中是否包含兩個用戶,試圖迭代陣列通當我試圖運行該函數,對於外部函數USEREMAIL第一迭代具有陣列第一個用戶的電子郵件,但在函數內部,userEmail具有第二個用戶的電子郵件。
我在這裏錯過了什麼嗎?
這已經回答了,但讓我澄清。 .then()返回一個promise,這是JavaScript將在其他函數和代碼之後執行的事情。它不是自動執行它,而是讓for循環再次運行,然後它終於說:「哦,我只是找到時間來真正運行此功能。」那時候,UserEmail已經被增加了一次,所以它只會用新的UserEmail運行checkFlag函數。 –
@Junior Dev,我現在明白了。謝謝。 –