[RV]を、それは約束ではない場合の約束、または値そのものの解決された値を返します。
あなたが非約束を待っている場合、解決された約束はすぐに返され、それは待たないでしょう。ただし、Chromeで約束& FFを使用せずに次のコードを待っています。
var obj = {
then:func => obj.func=func
};
setTimeout(() => obj.func(57), 1000);
async function go() {
var res = await obj;
console.log(res); //shows '57' after 1000ms
}
go();
スペックによると、約束ではありません待つ約束のようなオブジェクトを待つ必要がありますか? (私は()Mozillaの記事からリンクされているスペックを見てみましたが、私はそれを理解することができませんでした。)
主な質問ES-transpiler/interpretatorための約束何ですが、ログに記録されます操作。たとえば、ブルーバードの約束を使うことができますが、デフォルトの設定ではそれを理解できません。主な定義の1つは 'promise === Promise.resolve(promise)'ですが、transpilerはコンパイル時にそれを見ることができません。 –
ほとんどの場合、実際にはPromiseはいくつかのことですが、これは広く一般的に使われているregenerator-runtimeのPromiseを意味します。詳細については、https://babeljs.io/docs/plugins/transform-async-generator-functions/を参照してください。 –
実際にそれは約束を使用しますが、あなたはそれを見ません:-) Btw、それらの "約束のようなオブジェクト"は[* thenables *](https://stackoverflow.com/q/29435262/1048572)とも呼ばれます。 – Bergi