当前位置: 首页 > 知识库问答 >
问题:

返回未定义的值-node.js[duplicate]

周培
2023-03-14

我有下面的函数,它可以正确地从响应中提取图像的前缀和后缀,并生成一个可变的结果,其中包含场馆图像的url。然而,当我返回结果时,我一直没有定义。这里出了什么问题?

function getPhotoUrl(venue_id,venue_location,venue_query){
  request({
      url: 'https://api.foursquare.com/v2/venues/'+venue_id+'/photos',
      json:true,
      method: 'GET',
      qs: {
        client_id: 'my_id',
        client_secret: 'my_secret',
        near:venue_location,
        query: venue_query,
        v: '20171114',
        limit: 1
      }
    }, function(err, res, body) {
        var result="";
        if (err) {
          console.error(err);
        } else {
          console.log(body.response.photos.items[0].prefix+"300x500"+body.response.photos.items[0].suffix);      
      }
      result=body.response.photos.items[0].prefix+"300x500"+body.response.photos.items[0].suffix;
      return result; 
    }
  );
}
<!-- begin snippet: js hide: false console: true babel: false -->

共有1个答案

邹英悟
2023-03-14

请尝试使用async/await。将您的执行包装在一个promise中,即resolve返回值和reject错误值。这样,您就可以等待函数并获得返回值。记住await停止执行,直到返回的promise得到实现。

function getPhotoUrl(venue_id,venue_location,venue_query){
  return new Promise((resolve, reject) => {
    request({
      url: 'https://api.foursquare.com/v2/venues/'+venue_id+'/photos',
      json:true,
      method: 'GET',
      qs: {
        client_id: 'my_id',
        client_secret: 'my_secret',
        near:venue_location,
        query: venue_query,
        v: '20171114',
        limit: 1
      }
    }, function(err, res, body) {
        var result="";
        if (err)
          reject(err);     
      }
      result=body.response.photos.items[0].prefix+"300x500"+body.response.photos.items[0].suffix;
      resolve(result);
    });
  })
}

await getPhotoUrl('', '', '')
 类似资料:
  • 然而,当我只使用console.log(body)时,它会给出正确的结果 …………………………。 ………………………… ……

  • 我正在尝试为discord bot执行命令,它从MySQL表中输出整数。 我尝试使用async/await、Promissions和回调来实现这一点,但结果总是一样的。在这里,我用promise再次尝试,因为在过去它不知何故起了作用。现在不会了。 下面是返回promise的函数: 下面的代码将结果赋值给Access Level变量: Catch函数捕获表示“TypeError:无法读取未定义的属性

  • 问题内容: 因此,当我打开灯箱时,我试图禁止在页面上滚动,而我发现这个确实有用的脚本非常有用。不幸的是,当我在自己的页面上使用它时,它也禁止在灯箱中滚动。我开始用警报调试代码,只是发现该事件。wheelDelta在我的页面上返回“undefined”,而在JSFiddle中,它返回-120。 问题答案: jQuery事件处理程序中的对象不能反映真实事件。是IE和Opera的非标准事件属性,可通过j

  • 问题内容: 我正在尝试获取返回值,但始终无法定义。 我不确定如何获取任何返回值并在其他地方使用它?我需要使用此返回值来与其他函数进行验证,但是它似乎在范围之内。 这是我的代码: 问题答案: 移动以下行: 进入回调: 如果希望返回某些内容,则还需要向其添加回调,以便可以使用它的返回值。例如,如果您希望这样做: 这将无法正常工作,因为内容的最终值将被异步检索。相反,您需要这样做: 您不能异步返回数据。

  • 我是JS的新手,不明白为什么我的程序中的图像没有改变。所有的变量都运行良好。下面是片段 所有的图像都被命名为1.jpg,2.jpg,3.jpg,4.jpg,直到24。这是一种很奇怪的方式,我也知道,如果有人知道更好的方式,那会更好。

  • 我打印了错误, 这两个文件在同一个目录中