如何链接 return 承诺的一系列功能,并需要不同的参数?
How to chain a series of functions which return promises, and require different parameters?
我有两个异步函数,它们使用已经以某种方式获取的参数:
var a = getUserinput();
var b = getUserinput();
var c = getUserinput();
var d = getUserinput();
var func1 = function(valA, valB){
var deferred = $q.deferred;
//http call with valA, valb...
// when complete, resolve deferred
return deferred.promise;
}
var func2 = function(valC, valD){
var deferred = $q.deferred;
//http call with valC, valD...
// when complete, resolve deferred
return deferred.promise;
}
我想执行func1
然后func2
。问题是我无法在能够向 func2
.
提供参数的同时找到成功执行此操作的方法
例如,如果我这样做
func1(a, b).then(func2(c, d));
func2
在 func1
完成之前执行。
如何在 func1
完成后才执行 func2
?
func
提供匿名函数并在其中放置 func2
调用:
func1(a, b).then(function() {
func2(c, d);
});
如果有帮助的话,我最近使用了用 C 为 UNIX 编写的第一个流氓版本,并重写了它 javascript 以便在浏览器中工作。我使用了一种叫做 continuation 的技术来等待用户的键输入,因为在 javascript 中没有中断。
所以我会有这样一段代码:
void function f() {
// ... first part
ch = getchar();
// ... second part
}
将在
中转换
function f() {
// ... first part
var ch = getchar(f_cont1);
return;
// the execution stops here
function f_cont1 () {
// ... second part
}
}
然后存储延续以在按键事件上重复使用。关闭后,一切都会从停止的地方重新开始。
我有两个异步函数,它们使用已经以某种方式获取的参数:
var a = getUserinput();
var b = getUserinput();
var c = getUserinput();
var d = getUserinput();
var func1 = function(valA, valB){
var deferred = $q.deferred;
//http call with valA, valb...
// when complete, resolve deferred
return deferred.promise;
}
var func2 = function(valC, valD){
var deferred = $q.deferred;
//http call with valC, valD...
// when complete, resolve deferred
return deferred.promise;
}
我想执行func1
然后func2
。问题是我无法在能够向 func2
.
例如,如果我这样做
func1(a, b).then(func2(c, d));
func2
在 func1
完成之前执行。
如何在 func1
完成后才执行 func2
?
func
提供匿名函数并在其中放置 func2
调用:
func1(a, b).then(function() {
func2(c, d);
});
如果有帮助的话,我最近使用了用 C 为 UNIX 编写的第一个流氓版本,并重写了它 javascript 以便在浏览器中工作。我使用了一种叫做 continuation 的技术来等待用户的键输入,因为在 javascript 中没有中断。
所以我会有这样一段代码:
void function f() {
// ... first part
ch = getchar();
// ... second part
}
将在
中转换function f() {
// ... first part
var ch = getchar(f_cont1);
return;
// the execution stops here
function f_cont1 () {
// ... second part
}
}
然后存储延续以在按键事件上重复使用。关闭后,一切都会从停止的地方重新开始。