1
私はnode.jsを学び、非同期フィボナッチ関数に問題があります。fibonacci関数をasyncで実行するには?
本の例ではES6がありませんが、私の例ではES6を使用しています。たぶんそれは問題です。
マイコード:
const http = require('http');
const url = require('url');
const fibonacciAsync = exports.fibonacciAsync = (n, done) => {
if (n === 1 || n === 2) {
done(1);
} else {
process.nextTick(() => {
fibonacciAsync(n - 1, (val1) => {
process.nextTick(() => {
fibonacciAsync(n - 2, (val2) => {
done(val1 + val2);
})
})
})
})
}
}
http.createServer((req, res) => {
const urlP = url.parse(req.url, true);
let fibo;
res.writeHead(200, {'Content-Type': 'text/plain'});
if (urlP.query['n']) {
fibo = fibonacciAsync(urlP.query['n']);
res.end('Fibonacci ' + urlP.query['n'] + '=' + fibo);
}
}).listen(8124, '127.0.0.1');
これは私にエラーを返します:fibo = fibonacciAsync(urlP.query['n']);
機能fibonacciAsync
への呼び出しです:
TypeError: done is not a function in "done(val1 + val2);"
ありがとうございました。自分のコードの例を教えてもらえますか? – zahabim
私の投稿を編集して例を追加しました。私はそれがあなたのために動作することを願って:) – TamirNahum
はい、非常に感謝! – zahabim