将 fetch 包装在 Promise 中有什么好处?

lar*_*rns 5 javascript promise fetch-api

我看到人们将 fetch 方法包装在一个承诺中。我似乎无法理解这样做的好处?Fetch 本身会返回一个承诺,您可以从中提取您需要的内容。

let url = 'https://jsonplaceholder.typicode.com/users';

fetch(url)
 .then(function(response){
   //console.log(response.json());
   return response.json();

 })

 .then(function(data){
   console.log(JSON.stringify(data));
 })

 .catch(function(err){
 //console.log(err);
 err = 'this is an error';
 console.log(err);
 })
Run Code Online (Sandbox Code Playgroud)

与此相比

return new Promise((resolve, reject) => {
  fetch(url)
  .then(res => res.json())
  .then(data => resolve(data))
  .catch(err => reject(err));
});
Run Code Online (Sandbox Code Playgroud)

Vau*_*lts 2

“它返回一个 Promise,该 Promise 解析为对该请求的响应,无论成功与否。”

来源

无关紧要。这只是人们正在做的事情,他们可能习惯于使用 jQuery Deferreds 之类的东西,而这些东西没有适当的 A+ Promise 实现。如果你愿意的话,如果你使用像 Bluebird 这样的东西我猜你可以这样做,但这或多或少毫无意义。