了解 Fetch() Javascript

Understanding Fetch() Javascript

我正在学习 javascript 教程,我需要一些帮助来理解以下函数中的模式:

get:  function(url) {
         return fetch(rootUrl + url, {
            headers: {
                'Authorization': 'Client-ID ' + apiKey
            }
        } )
        .then(
            function(response) {
                return response.json();
            }
        );
    }

我感到困惑的是,如果我们实际上只关心 response.json(),那么返回 fetch() 有什么意义?

return fetch 用于将 .then().catch() 链接到 .get() 调用的能力,例如

obj.get(url).then(function(data) {
  console.log(data)
})

没有 return 语句 obj.get(url).then(handler) 如果对象没有 属性 命名的 then 可能会记录错误,其中值是一个处理 Promise 返回的函数fetch,其中 get 函数

没有返回任何值

var objWithReturn = {
  get: function(url) {
    return Promise.resolve(url)
      .then(
        function(response) {
          return JSON.parse(response);
        }
      );
  }
}

objWithReturn.get('{"a":1}')
  .then(function(data) {
    console.log(data)
  })

var objWithoutReturn = {
  get: function(url) {
    Promise.resolve(url)
      .then(
        function(response) {
          return JSON.parse(response);
        }
      );
  }
}

objWithoutReturn.get('{"a":1}')
  .then(function(data) {
    console.log(data)
  })

它没有返回 fetch()。当您编写链式函数调用时:

return f1(args).f2(otherargs);

相当于:

var temp1 = f1(args);
var temp2 = temp1.f2(otherargs);
return temp2;

所以你的函数可以写成:

get: function(url) {
    var promise1 = fetch(rootUrl + url, {
        headers: {
            'Authorization': 'Client-ID ' + apiKey
        }
    });
    var promise2 = promise1.then(function(response) {
        return response.json();
    });
    return promise2;
}

现在您可以看到它 returns 承诺,当它被填满时,returns 来自响应的 JSON。