当前位置: 首页 > 面试题库 >

如何按顺序使用angularjs $ q链接promise?

呼延升
2023-03-14
问题内容

在promise库 Q中 ,您可以执行以下操作以顺序链接promise:

var items = ['one', 'two', 'three'];
var chain = Q();
items.forEach(function (el) {
  chain = chain.then(foo(el));
});
return chain;

但是,以下命令不适用于 $ q

var items = ['one', 'two', 'three'];
var chain = $q();
items.forEach(function (el) {
  chain = chain.then(foo(el));
});
return chain;

问题答案:

只需使用$ q.when()函数:

var items = ['one', 'two', 'three'];
var chain = $q.when();
items.forEach(function (el) {
  chain = chain.then(foo(el));
});
return chain;

注意:foo必须是工厂,例如

function setTimeoutPromise(ms) {
  var defer = $q.defer();
  setTimeout(defer.resolve, ms);
  return defer.promise;
}

function foo(item, ms) {
  return function() {
    return setTimeoutPromise(ms).then(function () {
      console.log(item);
    });
  };
}

var items = ['one', 'two', 'three'];
var chain = $q.when();
items.forEach(function (el, i) {
  chain = chain.then(foo(el, (items.length - i)*1000));
});
return chain;


 类似资料:
  • 问题内容: 我已经看到在Q中链接任意数量的诺言;我的问题是不同的。 如何进行可变数量的调用,每个调用均按顺序异步返回? 该方案是一组HTTP请求,其数量和类型由第一个HTTP请求的结果确定。 我想简单地做到这一点。 我也看到了这个答案,暗示着这样的事情: …但是以这种方式遍历itemsToProcess似乎很尴尬。或定义一个称为“循环”的新函数来抽象递归。有什么更好的方法? 问题答案: 使用可以很

  • 问题内容: 遵循方法有效: 4个问题: 1)如果例如不好,我不想执行其余的功能,那我该如何退出(退出,中断,什么,..)? 2)我如何设置其中一些并行,其中一些串行? 3)如何在它们之间传输数据? 4)如何使以下函数从其先前结果中得到依赖? 问题答案: 您在问如何在promise中 链接 功能。 3)如何在它们之间传输数据? 4)如何使以下功能取决于其先前的结果? 返回 链中 下一个函数的数据(或

  • 我需要以RxJava风格按顺序链接Vertx CompositeFuture,以获得相关CompositeFuture,避免回调地狱。 用例: 每个CompositeFuture.any/all做一些返回期货的异步操作,比如myList1、myList2、myList3,但是我必须等待CompositeFuture.any(myList1)完成并返回成功,然后再做CompositeFuture.a

  • 问题内容: 我很难按顺序执行诺言。 OnceUponATime()应该顺序输出[“ Once”,“ upon”,“ a”,“ time”],但是由于某种原因,它们会立即输出。 知道我在做什么错吗? 问题答案: 但由于某种原因,它们却立即被输出。 您已经在这里打电话给他们: 您需要推动。顺便说一句,您应该使用而不是在循环中使用推入数组。实际上,您实际上并不需要,但是可以直接遍历数组:

  • 问题内容: 如果我有这样的数据: 我如何将命令连接成这样: 我在下面使用了此查询,但命令列的顺序不依其顺序号而定: 任何意见和建议将不胜感激。^ _ ^ 问题答案: 永远不要使用。阅读为什么不在Oracle中使用WM_CONCAT函数? 请参阅本主题https://stackoverflow.com/a/28758117/3989608。 它没有记录,并且依赖的任何应用程序一旦升级到后都将无法工作

  • 问题内容: 通过启用AngularJS中的html5Mode时,当您进入站点更深的页面时,导航似乎偏斜。 例如: 当我导航到根目录时,我可以单击站点中的所有链接,Angular 会接管整个站点的导航并加载正确的视图。 但是当我导航到该URL时(或者当我进入上述类似的深层链接时点击刷新…),该导航无法正常工作。首先,按照$ locationProvider.html5Mode的文档规定,我们捕获服务