延迟承诺返回变量angularjs

时间:2017-12-23 14:30:00

标签: javascript angularjs promise deferred

有没有办法可以实现这一点,其中toys是延迟的API请求,并且在运行时返回res的值,并且是记录toysData时的最终结果。

承诺

const toys = (url) => {
  const deferred = $q.defer();
  const params = {
    id: url,
  };

  ToysModel.get(params, (data) => {
    deferred.resolve(data);
  }, (error) => {
    deferred.reject(error);
  });
  return deferred.promise;
};

请求

let toysData = toys(uuid)
    .then(res => res);

console.log(toysData);

api致电

export default class ToysModel {
  constructor($resource, ENV) {
    const url = `${ENV.apiEndpoint}/`;

    const actions = {
      oembed: {
        url: `${ENV.apiEndpoint}/toy/:id`,
        method: 'get',
        params: {
          id: '@id',
        },
        crossDomain: true,
      },
    };
    return $resource(url, {}, actions);
  }
}

1 个答案:

答案 0 :(得分:0)

变量toysData会有promise对象。你可以订阅成功或失败状态。如果您想记录响应,您只需要使用日志功能订阅成功状态

toys(uuid).then(console.log);