javascript - 在 AngularJS 中创建 Promise

标签 javascript angularjs promise angular-promise

我正在尝试使用 $q 服务在 Angular 中创建一个 promise 。 它返回从 Web 服务检索的对象。如果该对象在缓存中,则返回该对象而不调用 Web 服务。

问题是两个解析被调用。

也许,我使用的是 promise 反模式吗?

这是我的代码:

    function returnMapAsync() {

  return $q(function (resolve, reject) {
    if (navigationMap) {
      resolve(navigationMap);
    } else {
      ServerRequest.getNavigationMap().then(function (data) {
        navigationMap = data.object;
        resolve(navigationMap);
      });
    }
  });
}

谢谢

最佳答案

您不需要将所有内容都包含在 $q() 调用中。为了 promise navigationMap 使用$q.when :

function returnMapAsync() {

    if (navigationMap) {
        return $q.when(navigationMap);
    }
    return ServerRequest.getNavigationMap();
}

关于javascript - 在 AngularJS 中创建 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31024021/

相关文章:

JavaScript promise : Deep nested context with bind(this)

javascript - 优化在 Firebase Firestore 中检索按另一个集合分组的数据

promise - 相当于 Promise.try 和 Observables?

javascript - d3.js 强制定向图的日期时间解析和过滤

javascript - 通过调用javascript函数在html中设置参数值

angularjs - 如何创建一个非单例的 Angular JS 服务?

javascript - 使用 Angular js 在前端下载文件

javascript - 如何使用 while 循环将 php 中的数据传输到 javascript

javascript - 无需点击即可在 ui-router 中切换状态

angularjs - Angular.js $compile 返回 html 数组但不是实际的 html