2017-03-16 17 views
0

nodejsの非同期関数から値を返す方法は?

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){ 
 
\t 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:私はすでにグローバル変数として試してみましたが、依然として直面する問題..事前に

おかげで...

+0

async javascript関数から値を返すことはできません。タスクの完了後に情報を返す唯一の方法は、コールバックによるものです。私はあなたがそれらのうちのいくつかを使用しているのを見ますが、彼らがどのように、なぜ彼らが必要であるかを確かめることはできません。コールバックを調査してください。利用可能な情報がたくさんあります。この質問は何度も回答されています。 – magreenberg

答えて

1

あなただけの直接コールバックからres.sendvalue変数を送信する必要があります。

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

あなたに働いてくれてありがとう..... \ –

関連する問題