【发布时间】:2015-10-04 21:11:34
【问题描述】:
我正在 MEAN Stack 中制作一个项目。在前端我必须做两件事。首先使用 Promise 从后端获取数据。并在另一个承诺中再次使用该数据。基本上是这样的。
var deviceId="";
deviceId = $http.get(Config.apiurl+'/mobile/devices')
.then(function(response){
deviceId = response.data.devices[0].deviceId;
console.log(deviceId);
return response.data;
}, function(response){
console.log("Error");
return $q.reject(response.data);
});
console.log(deviceId);
var postString = "AT+CGPSINF=0 0," + lat + "," + lng + ",847.413452,20150520205855.000,100,11," + velocity + ",0.000000 OK ,CRASH=0,"+deviceId;
$http.post(Config.apiurl + '/device/locations', postString, { headers: { 'Content-Type': undefined}})
.then(function (response) {
console.log("Sent the data");
return response.data;
}, function (response) {
console.log("got error response");
return $q.reject(response.data);
});
现在有一个概念问题,我需要 deviceId 进行第二次 API 调用,但我不会同步获取它,因为 Promise 本质上是异步的。如果我必须实现这样的行为。我该怎么做?
第二问。无论我在我的承诺中获得什么数据,我都无法在承诺之外获得相同的价值。话虽如此。我知道这一定是因为deviceId = response.data 是一个参考。因此,当响应的范围结束时。来自deviceId 的值消失了。如何从 Promise 中获取数据?还是我应该在第一个承诺中调用另一个承诺以使其同步并确保我始终拥有数据?
【问题讨论】:
-
你可以把
var postString的代码放在then
标签: javascript angularjs promise meanjs