我正在构建一个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