返回数据或触发并返回承诺链中的数据

时间:2018-10-01 16:20:01

标签: javascript promise

我正在使用一个Promise链来轮询文件中可用的数据。

我发现这很好用,我可以根据响应数据中可用的json节点运行链。

function getData(url, node, interval, timeout) {
  var endTime = Number(new Date()) + timeout,
    returnData = function(resolve, reject) {

    loadJSON(url, function(data) {

      try {
        json = JSON.parse(data);
      } catch (e) {
        json = data;
      }

      js = (node !== false) ?  json[node] : json;

      if (js) {
        resolve(json);
      } else if (Number(new Date()) < endTime) {
        setTimeout(returnData, interval, resolve, reject);
      } else {
        if (json.error) {
          reject(json.error.message);
        } else {
          reject('no data available');
        }
      }

    });

  };

  return new Promise(returnData);
}

我需要更改请求链的顺序,以便如果数据未返回200状态代码,则应该在再次运行getData promise之前请求生成数据。

我如何调整承诺链以响应现有数据或发起新的数据请求,然后获得该数据请求?

需要执行条件替换请求的情况是以前没有数据。

谢谢

0 个答案:

没有答案