即时通讯使用量角器来检索的文本。
该函数的一个是
//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;
});
};
和IM调用函数中的另一个的js(其中i导入上述的js)文件
var getUserImpersonationID = ImpersonationSuccessPage.getUserSessionID();
当我尝试
console.log('User Impersonation ID is:'+getUserImpersonationID);
我得到了一个未定义的值。
但是console.log('sessionID is:'+sessionID);
在功能显示正确的值。
任何人都可以提出什么即时做错了什么?
内部调用来获取文本返回一个承诺。 继续前进,返回的承诺,然后你可以链接一个then
在调用getUserSessionID。 例
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);
})
或者,由于预期是假设如果你有一个ID与期望解决的承诺,您可以检查:
expect(this.getUserSessionID()).not.toBeNull();
你不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);
});