Javascript Angular2 http.post:使用subscribe创建承诺

Javascript Angular2 http.post:使用subscribe创建承诺,javascript,angular,typescript,ionic2,Javascript,Angular,Typescript,Ionic2,我正在尝试创建一个函数,返回一个承诺作为代码:(someprovider.ts) 我做错了什么?安德烈,您想使用将.map()返回的可观测值转换为承诺。返回该运算符的结果 return http.post(...).map(...).toPromise() 现在返回了一个正确的承诺,因此调用代码可以这样使用它: postToPaymentApi(...).then( data => console.log(data) ) 如果您想创建一个返回承诺的函数,您的函数应该是: pos

我正在尝试创建一个函数,返回一个承诺作为代码:(someprovider.ts)


我做错了什么?

安德烈,您想使用将
.map()
返回的可观测值转换为承诺。返回该运算符的结果

return http.post(...).map(...).toPromise()
现在返回了一个正确的承诺,因此调用代码可以这样使用它:

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

如果您想创建一个返回承诺的函数,您的函数应该是:

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});
           });
        });
}
postToPaymentApi(url:string,data:string,options:RequestOptions,order:order):承诺{
返回新承诺((解决、拒绝)=>{
this.http.post(url、数据、选项)
.map(res=>res.json())
.订阅(数据=>{
解析(数据);
}
},错误=>{
console.log(错误)
拒绝({error:error});
});
});
}

不要
。订阅
。映射
,然后将其转换为
。toPromise()
。或者只需使用observable.With.map和subscribe您使用的是observable,这是一个异步过程,您可以使用*ngIf在模板中显示数据
postToPaymentApi(...).then(
    data => console.log(data)
)
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});
           });
        });
}