【问题标题】:how to get return a value from asynchronous function in nodejs? [duplicate]如何从nodejs中的异步函数获取返回值? [复制]
【发布时间】:2017-08-08 03:27:11
【问题描述】:

var fs = require('fs');
var ytdl = require('ytdl-core');

var favicon = require('serve-favicon');
var express = require('express');
var app = express();

app.use(favicon(__dirname + '/public/favicon.png'));
app.get('/:id',function (req,res){
	 ID = req.params.id;

var url = 'http://www.youtube.com/watch?v='+ID;

//function
  ytdl(url,
  function(err, format) {

    if (err) throw err;
    
       value =  format.formats;//this is the json objact from ytdl module
       return value;// i want return this value to user
       console.log(format.formats);//i am getting value... in console but not outside of the function..       
});

res.send(ytdl);//i want to send that async objact to this page....

});
app.listen(80);
 

所以我想要那个“异步函数”之外的“值变量”,如果不可能,那么我想将该 json 对象发送到浏览器,但我不知道如何发送,所以我被困在这里请建议我下一步该怎么做?

ps:我已经尝试过作为全局变量但仍然遇到问题..

提前谢谢...

【问题讨论】:

  • 您不能从异步 javascript 函数返回值。任务完成后传回信息的唯一方法是通过回调。我看到您正在使用其中的一些,但您可能不确定如何或为什么需要它们。请研究回调,有很多可用的信息,这个问题已经回答了很多次。

标签: javascript node.js youtube node-modules


【解决方案1】:

您只需直接从回调中发送带有res.sendvalue 变量:

ytdl(url, function(err, format) {
  if (err) throw err;
  var value = format.formats;
  res.send(value);
});

【讨论】:

  • 谢谢你的工作.....\
猜你喜欢
  • 2016-01-14
  • 2018-04-09
  • 1970-01-01
相关资源
最近更新 更多