Parse.Promise.whenの戻り値について | この服が オススメと君に言いたくて 二月四日は Reco.(レコ)記念日

この服が オススメと君に言いたくて 二月四日は Reco.(レコ)記念日

Recorune(レコルネ)、Reco.(レコ)の企画、開発、運営を行うヘッドライン株式会社のCOO兼CTOであるKazumi Yanoのブログです。

もうそろそろこんばんは、でしょうか。

非同期で動きまくってお行儀の悪い!?
Parse Cloudのコードたちを交通整理するために、
Parse.Promiseを活用しています。
ようやく、何となく、分かって来ました。

で、複数のクエリーの結果を取得した後、
次の処理に移りたかったので、

return Parse.Promise.when([query1.count(), query2.count()]);

のようなコードを書いて、

.then(function(counts){

のようなコードで引数を受けていたのです。
countsは配列、という想定で。

https://parse.com/docs/js/symbols/Parse.Promise.html#.when

を見ると、

If they all succeed, then the returned promise will succeed, with the result being an array with the results of all the input promises.

と書いてあります。
「全ての入力promiseの結果が格納された配列」が返ってくるという
解釈は間違っているのか、counts[0]のようなアクセスだと値が取れません…

ということでParseのフォーラムで「promise when」だったかな?
で検索すると…

Parse.Promise.when doesn't work

という内容が掲載されていて、
どうも、

.then(function(count1, count2){

という受け方をするのが正しいのだそうな…
私、こんな融通効き過ぎるプログラミング言語って、
キライなんですよ…
もう頭が凝り固まってきているので、
自分が融通効かないもので…

とは言うものの、
時代はJavaScriptですもんね。
ちゃんと勉強しないと。