2016-04-30 5 views
1

ないとき、私はこれと同様のもの持って活字体チェックを失敗:私は1,2および3で表される実際のコードである

return this.$q.all([ 
     1, 
     2, 
     3 
    ]); 

を2つの約束と1つの関数は1つの数値を返します。私は2つの約束とブール値を返す関数を試しました。ここで

はコードです:

return this.$q.all([ 
     self.ens.getUserProfile(), 
     self.getWordsOrderBy(), 
     self.getPos() 
    ]); 

これは活字体チェッカーを渡すと、このようなメッセージを与えていない:

型の引数 '(IPromise |数)[]' ではありません '{[id:string]:IPromise; } '。
タイプ '(IPromise | )[]'にインデックスの署名がありません。

何が間違っているかも考えている人はいますか?私が$ q.allが約束または価値のいずれかを受け入れることを私が理解しているから。

ここで値またはブール戻っている私が持っている機能だ:

getWordsOrderBy =(): number => { 
    this.wordsOrderBy = this.ens.getOrderBy(EnumGetOrderBy.Word) 
    return 1; 
} 

getWordsOrderBy =(): boolean => { 
    this.wordsOrderBy = this.ens.getOrderBy(EnumGetOrderBy.Word) 
    return true; 
} 

私はgetWordsOrderByが約束または私は$を受け入れるq.all作ることができるいくつかの方法を返す作ることができ、いくつかの方法がありますブールだけでなく約束?これは直ちに戻る同期関数であることに注意してください。

答えて

1

$q documentation$q.all()は、約束事の配列またはハッシュを受け入れます。それは、約束事に価値を入れなければならないということです。これを行うには$q.when()を使用できます。これは、値または(第三者の)有能な約束事であるかもしれないオブジェクトを$ q約束に包みます。 あなたの場合、次のようになります。

return this.$q.all([ 
    self.ens.getUserProfile(), 
    // wrap value into promise 
    $q.when(self.getWordsOrderBy()), 
    self.getPos() 
]); 
関連する問題