2016-07-05 56 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你試過這個嗎? –