2017-12-01 3 views
0

からデータを取得する方法:https://developers.google.com/google-apps/calendar/quickstart/nodejsのJavascript(NodeJS):この例に関しては、バックGoogleカレンダーのAPIコールバック

私はイベントのJSON配列を返すようにlistEventsを変更したいです。

それが現在のように呼ばれています:

function authorize(credentials, callback) { 

私はListEventsにreturn文を追加しようとしたし、この:

"listEventsは" コールバックに渡された関数である

authorize(JSON.parse(content), listEvents); 

私はconsole.logの前に上記のconsole.logを取得するため、私には非同期になっていることは知っていますlistEvents関数の出力。 私は「待って」という言葉を投げてみましたが、運はありません。

と私はlistEventsにして追加のパラメータを設定してみました:

var jsonEvents; 
authorize(JSON.parse(content), listEvents(jsonEvents)); 
console.log("Json Events="); 
console.log(jsonEvents); 

「例外TypeError:コールバックが関数ではありません」をもたらしました。

更新:@Tuchesの回答に基づいて、私はこれを動作させました。これを拡大する必要があるかどうかを知りたいですか?

authorize(JSON.parse(content), function(token) { 
     console.log("Got Token"); 
     //console.log(token); 
     listEvents(token, function(jsonResult) { 
      console.log("Json Callback Events="); 
      console.log(jsonResult); 
     }); 
    }); 

答えて

1

私はGoogleカレンダーAPIについてよくわかりませんが、第2引数をすばやく読み取るにはコールバック関数を使用します。これは、authorizeの結果が終了し、listEventsが呼び出されることを意味します。だから、実際にあなたが何をすべきかハンドラのいずれかがlistEvents内でこのデータ・リターンであるか、のように、コールバックを返すためにlistEventsを変更することができます。

function listEvents(auth, callback) { 
    // ... implementation of the function 
    // When the function is done an there's data to 
    // return, callback the data 
    callback(data); 
} 

あなたはこのような何かを行うことによってlistEventsからデータを返す処理することができますこの方法:

authorize(JSON.parse(content), listEvents(data, function(response) { 
     console.log(response); // <-- return from listEvents  
    }) 
); 

EDIT:コード上の小訂正。 = 150 REQ:

+0

はオーケー、それは理にかなっている、しかし、私はAPIライブラリの一つで、このエラーを取得する:λノードtestGoogleCalendarAPI.js E:\ GitHubの\ NealWalters \ RabbiJoseph \ node_modules \ googleapis \ libに\ apirequest.js authClient.request(オプション、コールバック); ^ TypeError:authClient.requestは関数ではありません – NealWalters

+0

私はauthorizeからトークンを取得してから、同期方式でlistEventsを呼び出しましたが、listEventsはcalendar.list.eventsからのコールバックを持っているためさらに複雑です。関数(err、response)。 – NealWalters

+0

私の更新を見て、それが働いているが、おそらく最良の方法ではない。 – NealWalters

関連する問題