20388


**Thenableについて**  
・どういう意味？  
・then メソッドを持っているオブジェクトがThenable？  
・promiseで、.thenと書けばThenable？  
・それとも、promiseオブジェクト間の相互変換がThenable？

* * *

**下記記述で、なぜQ promiseオブジェクトへ変換することが出来るのでしょうか？**  
・Qライブラリ専用の書き方？

[code]

    // Q promiseオブジェクトに変換する
    Q(promise).then(function(value){
        console.log(value);
    })
    
[/code]

> Q(thenable) とすることでThenableなオブジェクトをQ promiseオブジェクトへと変換することが出来ます

<https://github.com/azu/promises-
book/blob/master/Ch4_AdvancedPromises/resolve-thenable.adoc#Thenable>

* * *

**「ES6 のPromisesオブジェクト」を、「他ライブラリの Promises風オブジェクト」へ変換する方法について**

・他ライブラリが、promiseオブジェクトを返す関数を公開APIとして用意していれば、それに従うだけ？  
・Thenableという考え方が共通しているだけで、相互変換実装方法はライブラリ毎に異なるということでしょうか？


CC BY-SA 3.0
2015-12-26T00:49:38.623
20384
2015-12-27T03:15:59.113
7886
question
ecmascript-6
ES6 Promisesのpromiseオブジェクトを、他ライブラリの promise風オブジェクトへ変換するには？


Q Promiseについてはあまり詳しくないので参考程度ですが

> ### Thenableについて
>
> then メソッドを持っているオブジェクトがThenable？

thenを持っているPromiseのようなオブジェクトのことをいいます

> ### 下記記述で、なぜQ promiseオブジェクトへ変換することが出来るのでしょうか？

`Q(promise)`はQ
Promiseオブジェクトを返します。引数としてthenableなオブジェクトを与えるとそれをPromiseに変換するのではないでしょうか?

> ### 「ES6 のPromisesオブジェクト」を、「他ライブラリの Promises風オブジェクト」へ変換する方法について
>
> 他ライブラリが、promiseオブジェクトを返す関数を公開APIとして用意していれば、それに従うだけ？  
>  Thenableという考え方が共通しているだけで、相互変換実装方法はライブラリ毎に異なるということでしょうか？

  1. ES6 Promiseの場合はその関数は`Promise.resolve`になります。その関数や方法はライブラリによって異なります

  2. [Promiseについての注意書き](http://azu.github.io/promises-book/#ch2-promise-resolve)

> then というメソッドを持っていた場合でも、必ずES6 Promisesとして使えるとは限らない事は知っておくべきでしょう。


CC BY-SA 3.0
2015-12-26T03:07:31.867
20388
2015-12-27T03:15:59.113
2015-12-27T03:15:59.113
5246
5246
20384
answer