我有两个异步函数,它们使用已经以某种方式获取的参数:
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
完成之前执行。
如何在func2
完成后执行func1
?
func
答案 0 :(得分:3)
提供匿名函数并在其中放置func2
调用:
func1(a, b).then(function() {
func2(c, d);
});
答案 1 :(得分:0)
如果有帮助,我最近在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
}
}
然后存储继续以在keypressed事件上重用。有了闭包,一切都会在停止的地方重新启动。