[英]value of a function in JavaScript(protractor) returns as undefined
即时通讯使用量角器检索文本。
功能之一是
//get the Impersonation ID
this.getUserSessionID = function(){
//get whole text
UserImpersonateTextElement.getText().then(function(text) {
var tempText = text;
var startString = 'session ID is ';
var sessionID = tempText.substring(tempText.lastIndexOf(startString)+startString.length,tempText.length);
console.log('sessionID is:'+sessionID);
return sessionID;
});
};
我在另一个js(我导入了上面的js)文件中调用了函数
var getUserImpersonationID = ImpersonationSuccessPage.getUserSessionID();
当我尝试
console.log('User Impersonation ID is:'+getUserImpersonationID);
我得到未定义的值。
但是console.log('sessionID is:'+sessionID);
在功能中显示正确的值。
谁能建议我在这里做错了什么?
内部获取文本的调用会返回一个承诺。 继续并返回该承诺,然后可以在调用getUserSessionID的过程中链接a then
。 例
this.getUserSessionID = function(){
//get whole text
return UserImpersonateTextElement.getText().then(function(text) {
var tempText = text;
var startString = 'session ID is ';
var sessionID = tempText.substring(tempText.lastIndexOf(startString)+startString.length,tempText.length);
console.log('sessionID is:'+sessionID);
return sessionID;
});
};
在通话中,您需要执行以下操作:
getUserSessionID().then(function(sessionId){
console.log('You session ID is ',sessionId);
})
或者,由于Expect假设可以解决该承诺,因此您可以检查ID是否包含Expect:
expect(this.getUserSessionID()).not.toBeNull();
您不从getUserSessionID
函数return
,而getUserSessionID
then
回调返回。 实际上,您不能返回值,因为您的函数是异步的。 您需要兑现承诺。
this.getUserSessionID = function(){
return UserImpersonateTextElement.getText().then(function(text) {
// ^^^^^^
var startString = 'session ID is ';
var sessionID = text.substring(text.lastIndexOf(startString)+startString.length, text.length);
console.log('sessionID is:'+sessionID);
return sessionID;
});
};
然后像这样使用它:
var promise = ImpersonationSuccessPage.getUserSessionID();
promise.then(function(getUserImpersonationID) {
console.log('User Impersonation ID is:'+getUserImpersonationID);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.