在JavaScript(量角器)的函数的值返回为未定义(value of a function in

2019-10-22 15:56发布

即时通讯使用量角器来检索的文本。

该函数的一个是

//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); 在功能显示正确的值。

任何人都可以提出什么即时做错了什么?

Answer 1:

内部调用来获取文本返回一个承诺。 继续前进,返回的承诺,然后你可以链接一个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();


Answer 2:

你不returngetUserSessionID功能,你只能从返回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);
});


文章来源: value of a function in JavaScript(protractor) returns as undefined