我正在尝试使用 $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() 调用中。为了保证 navigationMap 使用 $q.when :

function returnMapAsync() {

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

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

10-13 02:20