Protractor 量角器/Jasmine未定义变量问题

Protractor 量角器/Jasmine未定义变量问题,protractor,Protractor,为什么在下面的代码中变量username1是未定义的?用户名有效,但返回预期值: var AngularHomePage = function() { this.nameInput = element(by.model('yourName')); this.greeting = element(by.binding('yourName')); this.get = function() { browser.get('http://www.angularjs.org');

为什么在下面的代码中变量username1是未定义的?用户名有效,但返回预期值:

var AngularHomePage = function() {
  this.nameInput = element(by.model('yourName'));
  this.greeting = element(by.binding('yourName'));

  this.get = function() {
    browser.get('http://www.angularjs.org');
  };

  this.setName = function() {
    var username;
    var reader = csv.createCsvFileReader('../spece2e/sneh.csv', {
      'columnsFromHeader': false,
      'separator': ','
    });
    reader.addListener('data', function(data) {
      username = data[0];
      console.log('data from csv is: ',username);
      //return username;                
    });
    return username;    
  };

  var username1=this.setName();
  console.log('data being sent: ',username1);
  this.nameInput.sendKeys(username1);
};

module.exports=new AngularHomePage();

是否调用过
addListener
回调?如果不是,则从不将值设置为
username
,因此默认值为
undefined
。即使函数是,也可能是时间问题。添加一个侦听器(一般来说——我不知道这里的
csv
代表什么,也不知道它是如何实现的)`)不会同步执行该函数。console.log('csv中的数据为:'))提供正确的数据,但在此之后用户名变量变得未定义。您的
username
变量被声明到
setName
函数中,分配
var foo=setName()时您会得到什么?它再次变得未定义您的意思是
数据[0]
包含一个值,但是
foo
得到
返回结果的
未定义的,对吗?