如何链接 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));

func2func1 完成之前执行。

如何在 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
  }
}

然后存储延续以在按键事件上重复使用。关闭后,一切都会从停止的地方重新开始。