1
所以我創建了一個服務,它向後端發送一條消息來檢查某個特定的電子郵件地址是否已經在數據庫中。在服務中使用promise但不返回承諾
userDB.emailExists = function()
{
var returnVal;
$http.get('?backend=users&email=myemail%40mydomain.com')
.success(function(data) { returnVal = data.count ? true : false; })
.error(function(data) { /* TODO error handling */ });
returnVal = data.count ? true : false;
});
return returnVal;
};
現在目前這個單元測試(測試,看該功能是否返回true
或false
)與Expected undefined to be truthy.
失敗。我想我明白了爲什麼;作爲承諾只返回一個'佔位符',所以當我們到達'返回'聲明時,returnVal
尚未設置。
唯一的問題是,我不知道如何解決這個問題;我不想回復承諾,因爲這似乎是一個不必要的複雜層次結果是一個簡單的真實或錯誤
你can'd做到這一點,因爲你正在一個異步調用....看看如何處理它 - http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call –