我正在構建一個MVC項目。我得到用戶的當前位置的城市,並將其放在網頁的右上角,這是第一個運行的JavaScript代碼。第二個JavaScript代碼運行得到該城市的天氣狀況。但是,當運行js獲取天氣的時候,城市名稱不是由第一個js設置的。如何運行2個JavaScript代碼以獲得正確結果
因此,我需要確保在運行第二個js之前,第一個js完成。我怎樣才能做到這一點?
這裏是我的js代碼。
上首先是jQuery代碼
<script>
function GetUsersInfo()
{
$.get("http://ipinfo.io", function (response) {
$("#cityName").html(''+response.city);
if ($("#cityName").html === "")
{
$("#cityName").html("İstanbul");
}
}, "jsonp");
}
GetUsersInfo();
</script>
二碼爲角JS
<script>
var app = angular.module("ZenHaberApp", []);
app.controller("WeatherController", function ($scope, $http) {
var $city = document.getElementById("cityName").innerHTML
alert($city)
$http.get('http://localhost:62747/api/getweatherbycityname/' + $city).
success(function (data, status, headers, config) {
$scope.weathers = data.condition_temp;
}).
error(function (data, status, headers, config) {
alert(status);
});
});
</script>
談談回撥地獄大聲笑 – Derek
@Derek其實異步被設計爲結束回調地獄 –
承諾是旨在結束回調地獄。你發佈的代碼示例仍然有回調,因此仍然是回調地獄。承諾沒有回調。 – Derek