私のタスクにnode.jsが選ばれました。公式のGoogle APIクライアントライブラリを持っていて、JSONを使うのが自然です。しかし、私は非同期奇形腫に苦しんでおり、私がインターネットで見つけたガイドは私のケースをカバーしていません。node.jsで非同期で複数のリターンを処理する
ので、この例では、私は2つのファイルの内容を読み、メソッドに渡すしようとしている:私は最初の位置にある2つのコールバックをやっているので、
var fs = require('fs');
// Some more unrelated vars here
function readFiles(callback) {
fs.readFile('./refresh_token', 'utf8', function(err,refreshToken) {
if (err) throw err;
callback(refreshToken);
});
fs.readFile('./access_token', 'utf8', function(err,accessToken) {
if (err) throw err;
callback(accessToken);
});
};
function handleResults(refreshToken, accessToken) {
oauth2Client.setCredentials({
refresh_token: refreshToken,
access_token: accessToken
});
proceedNext(oauth2Client);
};
function proceedNext(credentialsObject) {
// do some more job
};
readFiles(handleResults);
は明らかにそれが働いていません。しかし、2つのメソッドを非同期的に実行し、両方の結果をハンドリングメソッドに渡してから、これが完了した後にさらに進める正しい方法(node.jsの方法)は何ですか?
私はこのような何か試してみました:
function readFiles() {
fs.readFile('./refresh_token', 'utf8', function(err,refreshToken) {
if (err) throw err;
fs.readFile('./access_token', 'utf8', function(err,accessToken) {
if (err) throw err;
oauth2Client.setCredentials({
refresh_token: refreshToken,
access_token: accessToken
});
proceedNext();
});
});
};
をそしてそれはグローバル変数でビットを演奏した後に働いたが、私はこれはひどい、ひどいアイデアだと思うと、それはnode.js.のポイントを損なうていますハイレベルでのNode.js
はあなたが約束に見たことがを - HTTPS:/あなたは、複数のコールバックを処理する「のNode.js方法」を参照してくださいを見てみたい場合/developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise – 23k
は、私はまた、約束を好む一方で'async' npmモジュール:http://caolan.github.io/async/ –