2016-07-05 54 views
1
this.queryMailApi = function(mailUrl, callback) { 
    request.get({url: mailUrl}, function (err, httpResponse, body) { 
    if (err) { 
     return console.error('post failed:', err); 
    } else 
    callback(body); 
    }); 
}; 

this.myCallBack = function(data) { 
    var emailData = data; 
    console.log(emailData); 
} 

这是我的函数+回调来获取值。我想把它返回给一个函数调用,就像你会这样做。NodeJs和量角器从共享文件返回一个值

var x = shared.queryMailApi(mailApiUrl, shared.myCallBack); 

稍后在代码中使用。我已经阅读了大量有关异步Nodejs的东西,这意味着我实际上无法做到这一点...但必须有一种方法。

回答

0

我没有尝试这个,但我认为你应该能够以这种方式做到这一点,承诺。

this.queryMailApi = function(mailUrl) { 
    var deferred = protractor.promise.defer(); 

    request.get({url: mailUrl}, function (err, httpResponse, body) { 
    if (err) { 
     deferred.reject(err); 
     return console.error('post failed:', err); 
    } 

    deferred.resolve(body); 
    }); 

    return deferred.promise 
}; 


this 
    .queryMailApi('[email protected]') 
    .then(function(response) { 
    console.log(response); 
    }); 

如果这不起作用,你可以看看webdriver.WebDriver.wait。这可能是有用的。

+0

谢谢我会试试这个。 – erics12512354

+0

@ erics12512354你试过这个吗? –