对 promise 对象的混淆
Confusion on promise objects
我已经阅读了有关 promise 对象的内容,并且实际上已经在 promise 对象上工作过,但我仍然必须说我对基础知识还不清楚。
$http.get('/someURL').then(function(response) {
// do something
}, function(error) {
});
人们说 .then returns 一个 promise 对象。在上面的例子中 $http.get() returns 一个 promise 对象。那么这条线是什么意思呢?意思是promise.promise?? ($http.get() 返回的承诺对象.then 返回的点承诺)?
谁能解释一下?
$http.get()
return是一个承诺。然后,您可以根据该承诺调用 .then()
。 .then()
return这是您实际上并未在代码中使用的另一个承诺。
例如,您可以这样做:
var p = $http.get('/someURL').then(function(response) {
// do something
}, function(error) {
// do something on error
});
// p is a promise
p.then(function() {
// more code here that runs after the previous code
});
或者,您可以这样做:
$http.get('/someURL').then(function(response) {
// do something
}, function(error) {
// do something on error
}).then(function() {
// more code here
});
因此,每个 .then()
处理程序 return 都是另一个承诺,因此您可以根据需要多次链接。一个特别有用的功能是,如果您 return 来自 .then()
处理程序回调的承诺,那么 .then()
处理程序已经 return 的承诺将继承您的承诺 return 来自这样的回调:
$http.get('/someURL').then(function(response) {
return $http.get('/someOtherURL');
}, function(error) {
// do something on error
}).then(function(secondResponse) {
// will get here when both http.get operations are done
});
承诺的一个很酷的特性是它们可以链接在一起。 $http.get() returns 一个你调用 then on 的承诺。那 then 也是 returns 一个承诺,并允许你在另一个 then 语句中做额外的事情。例如:
function myGet() {
return $http.get('myRoute').then(
function(res) {
//do something
return res;
}, function(err) {
return $q.reject(err);
});
}
myGet().then(
function(res) {
//Do something else
}, function(err) {
//Handle Error
});
如果您想在 myGet 函数成功或出错后执行一个过程,这会非常方便。
我已经阅读了有关 promise 对象的内容,并且实际上已经在 promise 对象上工作过,但我仍然必须说我对基础知识还不清楚。
$http.get('/someURL').then(function(response) {
// do something
}, function(error) {
});
人们说 .then returns 一个 promise 对象。在上面的例子中 $http.get() returns 一个 promise 对象。那么这条线是什么意思呢?意思是promise.promise?? ($http.get() 返回的承诺对象.then 返回的点承诺)?
谁能解释一下?
$http.get()
return是一个承诺。然后,您可以根据该承诺调用 .then()
。 .then()
return这是您实际上并未在代码中使用的另一个承诺。
例如,您可以这样做:
var p = $http.get('/someURL').then(function(response) {
// do something
}, function(error) {
// do something on error
});
// p is a promise
p.then(function() {
// more code here that runs after the previous code
});
或者,您可以这样做:
$http.get('/someURL').then(function(response) {
// do something
}, function(error) {
// do something on error
}).then(function() {
// more code here
});
因此,每个 .then()
处理程序 return 都是另一个承诺,因此您可以根据需要多次链接。一个特别有用的功能是,如果您 return 来自 .then()
处理程序回调的承诺,那么 .then()
处理程序已经 return 的承诺将继承您的承诺 return 来自这样的回调:
$http.get('/someURL').then(function(response) {
return $http.get('/someOtherURL');
}, function(error) {
// do something on error
}).then(function(secondResponse) {
// will get here when both http.get operations are done
});
承诺的一个很酷的特性是它们可以链接在一起。 $http.get() returns 一个你调用 then on 的承诺。那 then 也是 returns 一个承诺,并允许你在另一个 then 语句中做额外的事情。例如:
function myGet() {
return $http.get('myRoute').then(
function(res) {
//do something
return res;
}, function(err) {
return $q.reject(err);
});
}
myGet().then(
function(res) {
//Do something else
}, function(err) {
//Handle Error
});
如果您想在 myGet 函数成功或出错后执行一个过程,这会非常方便。