私は奇妙な問題に遭遇しています。 IPアドレスからジオロケーションを検索するモジュールを使用しています。ルックアップ方法は、デフォルトでsync
です。プロミスは解決も拒否もされていません。これの理由は何でしょうか?
ブルーバードを使用してメソッドを非同期に変換しましたが、その約束は決して解決または拒否されません。上記のスニペットで
var Promise = require('bluebird');
var geoip = Promise.promisifyAll(require('geoip-lite'));
geoip.lookupAsync('52.39.138.72').then((r) => {
console.log(r);
}).catch((err) => {
console.log(err);
})
console.log(geoip.lookup('52.39.138.72').country + '^^^^');
、最後console.log
が常に印刷されますが、then
またはcatch
内部の文のどちらが実行されます:ここで
約束もコールバックも関数を非同期に変換しません。 – slebetman
これを参照:http://stackoverflow.com/questions/25500466/asynchrous-callback/25500753#25500753これと:非同期的に - なぜ - 29885509#29885509 asyncが本当に何であるかを理解する – slebetman