2017-06-25 10 views
1

私はtypescriptで約束の配列のリストを返す必要があります。 これは私の実装であり、うまくいきません。私はこのことについて深刻な助けが必要です。typescriptの約束から配列のリストを返すことができます

const promise = new Promise((resolve, reject) => {  
    let onbidJobs:any = [...objects]; 
    let awardedJobs:any = [...objects]; 
    let completedJobs:any = [...objects]; 

    //return the jobs 
    resolve({ 
     onbid: onbidJobs, 
     awarded: awardedJobs, 
     completed: completedJobs 
    }); 
}); 

let returnedonbid:any; 
let returnedaward:any; 

promise.then((resolve) => { 
    this.returnedaward = resolve.awarded; 
    this.returnedonbid = resolve.onbid; //<-- I really want to return my arrays like this 
}); 
+0

上記のコードが有効です。現在、 'then()'コールバックの 'resolve'(' console.log() ')には何が返されますか? – Sirko

+0

2番目の見方:ジョブは非同期操作ですか? – Sirko

+0

*うまくいかない*どう? 'then'ハンドラの外側で' this.returnedonbid'にアクセスしようとしている可能性はありますか? –

答えて

0

: anyを使用しないでください。代わりに、オブジェクトの実際のタイプを可能な限り定義します。あなたはPromise定義した後の引数の戻り値の型を、あなたはthenの型情報を取得します "

const promise = new Promise<{onbid:any, awarded:any, completed:any}>((resolve, reject) => { ... 

:加えて、あなたはそうのようなPromise戻り値の型を定義する必要があります。

インターフェイスを使用して型をバンドルすることもできます。特に、複数回必要な場合は、コードを拡張する必要がありません。

+0

素敵な答えです。ちょうどそれが働いた –

+0

@EmekaObianom、私はあなたがあなたの編集で何かを逃したかもしれないと思う...あなたがタイプがどんなものかを知る方法がない限り、 'any'を使うのは避けるべきです。しかし、そうでなければ、あなたは物事の本質を持っていると思います。 – DoronG

関連する問題