我對承諾的回報有一些問題。之前,HTTP調用過程中,我用這樣的函數返回一個承諾:在函數中包裝兩個承諾
get_data: function (url)
{
let timestamp = new Date();
return $http({
method: "GET",
url: url
headers: {
'timestamp': timestamp,
}
}).then(
function successCallback(response)
{
console.dir("Response:");
console.dir(response["data"]);
return (response["data"])
},
function errorCallback(response)
{
console.dir(response);
return response;
});
},
這是很簡單的,我可以這樣使用它:
get_data('my_awesome_url').then(function(response){
let my_awesome_data = response
})
罪魁禍首是時間戳啄。我使用它來進行認證,爲什麼不重要,但通過從客戶端獲得它,我常常是以另一種語言設置的不合時宜的系統或系統的受害者。
我的解決方案是創建一個請求服務器時間戳的函數。但通過這樣做,我必須首先等待時間戳請求,然後啓動另一個請求並等待它結束。 這是我不知道該怎麼做的地方。我的代碼是這樣的:
get_data: function (url)
{
let timestamp = new Date();
get_timestamp().then(function(){
return $http({
method: "GET",
url: url
headers: {
'timestamp': timestamp,
}
}).then(
function successCallback(response)
{
console.dir("Response:");
console.dir(response["data"]);
return (response["data"])
},
function errorCallback(response)
{
console.dir(response);
return response;
});
});
},
但我不知道我應該返回什麼。我是否應該返回get_timestamp承諾並在「然後」等待另一個請求結束?我應該讓get_timestamp進行同步調用,因爲畢竟它只是一個小日期字符串? 我在我的代碼中一直使用舊函數,所以只保留舊的使用方法(只有一個),會很棒。
一如既往地感謝所有。
'回報get_timestamp()。然後(函數(){...' – dfsq