私はAPIに接続する関数を持っています。その関数はPromiseを返します。私はthis
コンテキストを含む定数で解決しているときにPromise.resolveがnullを返す理由を理解できません。プロミスはこれを解決する際にnullに解決します
const connect =() => {
return new Promise((resolve, reject) => {
Gitana.connect(config, function(err) {
const platform = this;
if (err) {
return reject(err);
}
console.log(platform) // Object that I want
resolve(platform)
});
});
}
connect()
.then(platform => {
console.log(platform) // null
})
それは任意のヘルプであれば、私は知らないが、私は、データストアと呼ばれる解決オブジェクト(プラットフォーム)上のメソッドが存在しているはず。私はその方法を解決した場合、すなわちresolve(platform.datastore)
私は方法を取得し、代わりにnull
の私はresolve(25)
またはresolve('hello')
、静的な値を解決しようとしている、それが正常に動作します。
オブジェクトを返す/解決するにはどうすればよいですか?
をこれは本当に私を困惑:-Dそれは内部のこと「この」参照ということでした ' Gitana.connect'コールバックがガベージコレクションされていますか?最上位レベルの変数 'let platform = {initial:true}'を宣言してから、コールバックの中でそれを 'this'バインディングに代入することができますか?解決の前に 'platform = this'ですか? – Sergeon
@Sergeon残念ながら、まだ残っています – Viktor
最悪の場合、他の解決策が見つからない場合は、 'JSON.parse(JSON.stringify(this)) 'を使ってオブジェクトの深いクローンを作成できます。 – Vasan