簡體   English   中英

Angular2 http.post:使用subscribe創建promise

[英]Angular2 http.post: Create promise with subscribe

我正在嘗試創建一個函數,它返回一個Promise作為代碼:(someprovider.ts)

postToPaymentApi(url:string, data:string, options:RequestOptions, order:Order):Promise<any>{
let result =  this.http.post(url, data, options).map(res => res.json())
  .subscribe(data => {
    // all my logic here!
    });
  }, error => {
    console.log(error)
  })

  return new Promise((resolve)=>{
    resolve(result)
  })

}

問題是,當我調用這個函數時,我沒有得到數據,因為這個帖子需要幾秒鍾才能完成,我在完成后得到了承諾。

this.postToPaymentApi(url, data, options, order).then(data => {
    console.log(data);
  })

我究竟做錯了什么?

如果你想創建一個返回promise的函數,你的函數應該是:

postToPaymentApi(url:string, data:string, options:RequestOptions, order:Order):Promise<any >{
   return new Promise((resolve, reject) => {
          this.http.post(url, data, options)
           .map(res => res.json())
           .subscribe(data => {
             resolve(data);
            }
           }, error => {
             console.log(error)
             reject({error: error});
           });
        });
}

Andre,您希望使用toPromise運算符.map()返回的observable轉換為promise。 返回該運算符的結果

return http.post(...).map(...).toPromise()

現在返回一個正確的promise,所以調用代碼可以這樣使用它:

postToPaymentApi(...).then(
    data => console.log(data)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM