获取后如何返回结果?

问题描述 投票:0回答:1

任务是向图像API(pixabay)发出异步请求并返回数据。我正在尝试使用fetch,我是对的吗?但在这种情况下,我得到一个空的返回值。我该怎么办?

function myfunc(){
  fetch(URL).then(function(response) {
      return response.json();
  }).then(function(hitsJSON) {
      hitsJSON.hits.forEach(item => {
          let resultItem = {
              id: item.id,
              url: item.previewURL,
              tags: item.tags
          }
          results.push(resultItem);
      });
  });
  return {
      query: query,
      images: results
  };
 }
javascript json asynchronous async-await fetch
1个回答
0
投票

您可以通过扩展在myfunc()中使用promises的方式来返回获取请求的结果。

通常的方法是返回fetch()创建的myfunc()承诺。这样,当你调用myfunc()时,你可以在.then()中添加一个函数处理程序,在你的请求完成后执行它(带有获取结果):

function myfunc(){

  // Add return here to return the fetch's promise
  return fetch(URL).then(function(response) {
      return response.json();
  }).then(function(hitsJSON) {

      var results = []

      hitsJSON.hits.forEach(item => {
          let resultItem = {
              id: item.id,
              url: item.previewURL,
              tags: item.tags
          }
          results.push(resultItem);
      });

      // Return result here when request is complete
      return {
          query: 'query',
          images: results
      };
  });
 }


 // Use myfunc() like this:    
 myfunc().then( function( results ) {

   console.log(results)

 })
© www.soinside.com 2019 - 2024. All rights reserved.