我如何等待,直到http.get将返回对象?
getData: function(){
let obj = false;
http.get("http://...")
.accept("application/json")
.end(function(err,res){
if(err==null && res.ok){
let js = JSON.stringify(res.body);
obj = JSON.parse(js);
}
})
return obj;
},
这个函数我正在调用var obj = getData;
但我仍然是假的,当我打印值时,首先返回false,然后分配对象,那么如何等到对象被分配然后返回对象? ?
答案 0 :(得分:1)
最简单的方法是使用回退功能。您可以使用承诺,但这需要额外的:
更改函数以接受回调函数,然后在get调用返回时调用该函数:
getData: function(cb){
let obj = false;
http.get("http://...")
.accept("application/json")
.end(function(err,res){
if(err==null && res.ok){
let js = JSON.stringify(res.body);
obj = JSON.parse(js);
if (cb)
cb(obj);
}
});
},
然后用:
来调用它getData(function(obj){
// do something here with the returned object.
});
http.get所使用的异步编程使用回调形式的事件 - 和承诺。所以等待http.get返回哪个是事件,然后一旦它返回就继续。
答案 1 :(得分:0)
如果你的http.get调用返回一个promise obj那么你可以做这样的事情 将获取数据的方法更改为
**HTML**
<div ng-controller="homeCtrl">
<my-dir name="{{namee}}" age="{{age}}"></my-dir>
</div>
**JS**
var app = angular.module("home")
app.controller("homeCtrl",["$scope",function($scope){
$scope.namee = "John";
$scope.age= 30;
}]);
app.directive("myDir",function(){
return{
restrict :'E',
scope: {
name : '@',
age : '=',
},
template: ['Directive name is: {{name}}',
'<p>{{age}}</p>'
]
}
})
**Output**
John 30
Directive name is: {{name}} {{age}}
和它的呼叫
getData: function(){
let obj = false;
return http.get("http://...")
.accept("application/json");
},