我试图在另一个网站之间调用网址,而不是所有网址都在同一时间,但无论我怎样尝试,它们似乎都在同一时间发生。这就是我现在所拥有的......
$http.get('/some/url/foo1')
.then($http.get('/some/url/foo2'))
.then($http.get('/some/url/foo3'))
.then($http.get('/some/url/foo4'))
.then($http.get('/some/url/foo5'))
.then($http.get('/some/url/foo6'))
.then($http.get('/some/url/foo7'))
.then($http.get('/some/url/foo8'))
.then($http.get('/some/url/foo9'))
.then($http.get('/some/url/foo10'))
.then($http.get('/some/url/foo11'))
.then($http.get('/some/url/foo12'))
.then($http.get('/some/url/foo13'))
.then($http.get('/some/url/foo14'));
这些不可能同时发生,当一个完成时,我希望下一个开始。
编辑:我也尝试将get
放在这样的函数中,但它们仍然可以同时被调用
$http.get('/some/url/foo1')
.then(rebuildModel('foo2'))
.then(rebuildModel('foo3'))
.then(rebuildModel('foo4'))
.then(rebuildModel('foo5'))
.then(rebuildModel('foo6'))
.then(rebuildModel('foo7'))
.then(rebuildModel('foo8'))
.then(rebuildModel('foo9'))
.then(rebuildModel('foo10'))
.then(rebuildModel('foo11'))
.then(rebuildModel('foo12'))
.then(rebuildModel('foo13'))
.then(rebuildModel('foo14'));
function rebuildModel(modelName) {
return $http.get('/some/url/' + modelName);
}
Edit2:这很有效......我看到我做错了什么
function rebuildModel(modelName) {
return function () {
return $http.get('/some/url/' + modelName);
}
}
答案 0 :(得分:2)
then
方法期望成功回调函数作为其第一个参数:
$http.get('url').then(successCallback);
successCallback
必须是函数定义,例如:
$http.get('url').then(function() { ... });
如果您提供$http.get()
作为参数:
$http.get('url').then($http.get('url'));
您正在调用一个函数,然后将返回值(这是一个promise对象)作为successCallback传递给then
方法。
情况类似于以下更明显的情况:
a. alert
b. alert()
第一个是函数定义,第二个是调用函数。
我同意Chandermani的回答,这应该是正确的。如果它不起作用,也许检查错误:
$http.get('/some/url/foo1')
.then(function() { return $http.get('/some/url/foo2'); })
.then(function() { return $http.get('/some/url/foo3');},
function() { alert('something went wrong');});
答案 1 :(得分:1)
您所做的链接不正确。它应该是这样的:
$http.get('/some/url/foo1')
.then(function() { return $http.get('/some/url/foo2'); })
.then(function() { return $http.get('/some/url/foo3');})
请记住,then
函数也返回一个promise,它由其返回值,成功和错误回调解决。