gpt4 book ai didi

javascript - 两个嵌套线程可以在没有 $q.defer() 的情况下 fork 并加入 AngularJS $q 中吗?

转载 作者:行者123 更新时间:2023-11-30 12:34:11 26 4
gpt4 key购买 nike

我 fork 了两个系列的步骤,每条腿有两个独立的异步操作 block :

Time           Threads forking and joining:
| *
| / \
V / \
+-----+ +-----+
/ \
/ \
$http.get('/foo') $http.get('/baz')
| |
V V
$http.get('/bar') $http.get('/blap') <-- Problem children
| |
V V
\ /
\ /
+------+ +------+
\ /
\ /
+
|
$log.log("Carry on")

是否可以在“问题子级别”中不使用 $q.defer() 来执行上述 fork /合并?

这就是我使用 $q.defer()

执行上述 fork/join 的方式
var left = $q.defer()
var right = $q.defer()
$http.get('/foo')
.success(function() {
$http.get('/bar')
.success(function() {
left.resolve()
})
})
$http.get('/baz')
.success(function() {
$http.get('/blap')
.success(function() {
right.resolve()
})
})

$q.all([left.promise,right.promise])
.then(function() {
$log.log("Carry on")
})

最佳答案

你可以在 then 函数中返回 promises 来链接它们

var promise1 = $http.get('/foo')
.then(function() {
return $http.get('/bar');
})
var promise2 = $http.get('/baz')
.then(function() {
return $http.get('/blap');
});

$q.all([promise1,promise2]).then(function(results){
var promise1Result = results[0]; // result of /bar
var promise2Result = results[1]; // result of /blap
// .... and do stuff
});

演示:http://jsfiddle.net/k9h4v1vv/

关于javascript - 两个嵌套线程可以在没有 $q.defer() 的情况下 fork 并加入 AngularJS $q 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com