如何从角度的.then()返回函数的响应?

时间:2018-03-15 10:13:56

标签: javascript angularjs http get response

从html调用check(),返回值应为true / false。

ng-class="{'timeline-inverted: check(id)'}"

$scope.server.get()从服务器脚本获取result(r),我需要将$scope.result返回到check()函数。

这是我的角度代码:

$scope.check = _.memoize(function(userId) {
    $scope.server.get({
        action: 'checkif',
        userID: userId
    }).then(function successHandler(r) {
        $scope.result = r.data.result;
    });
    return $scope.result;   // $scope.result is undefined
});

2 个答案:

答案 0 :(得分:1)

创建一个新的Promise,而不是在HTTP调用成功后解析。

$scope.check = _.memoize(function(userId) {
  return new Promise((resolve, reject) => {
    $scope.server.get({
      action: 'checkif',
      userID: userId
    }).then(function successHandler(r) {
      resolve(r.data.result);
    });
  });
});

答案 1 :(得分:0)

首先,使用memoize并不是一件好事。 memoized完全正常,因为参数具有原始类型。由于您调用了API,因此无法确定同一组apiVersion: extensions/v1beta1 kind: Deployment metadata: name: gateway-preprod spec: replicas: 1 strategy: type: RollingUpdate minReadySeconds: 50 template: metadata: labels: app: gateway-preprod spec: containers: - name: gateway-preprod image: eu.gcr.io/writecontrol-1055/gateway:v305 env: - name: writecontrolEnv value: preprod ports: - containerPort: 80 & userId参数!

我不知道为什么您的action来电被绑定到$http。也许最好把这些东西放在服务中。最后,您的应用程序可能看起来像这个结构良好的应用程序:

$scope