我从上周开始学习Ionic 2,现在我在我的服务中创建了一个函数,以便返回我的API URL,它将检查localstorage是否存储任何令牌。如果是,那么它会自动将令牌附加到URL,下面是函数的代码:
import numpy as np
def fun(x, y):
return np.vstack((3.769911184e12*np.exp(-19846/y[1])*(1-y[0]), 0.2056315191*(y[2]-y[1])+6.511664773e14*np.exp(-19846/y[1])*(1-y[0]), 1.696460033*(y[2]-y[1])))
def bc(ya, yb):
return np.array([ya[0], ya[1]-673, yb[2]-200])
x = np.linspace(0, 1, 5)
#y = np.ones((3, x.size))
y = np.array([[1, 1, 1, 1, 1], [670, 670, 670, 670, 670], [670, 670, 670, 670, 670] ])
from scipy.integrate import solve_bvp
sol = solve_bvp(fun, bc, x, y)
然后我使用以下方法在我的控制器中调用此函数:
getApiUrl(method: string){
this.storage.get('user_data').then((val) => {
let extUrl: string = null;
if(val){
extUrl = '?token='+val.token;
}
return "http://localhost/api/"+method+extUrl;
}).catch(err=>{
console.log('Your data don\'t exist and returns error in catch: ' + JSON.stringify(err));
return '';
});
}
发生以下错误:
this.http.post(this.service.getApiUrl("method_name"), data, options)
我曾尝试更改我的代码以使用Promise,但它似乎也不起作用,如何使我的函数等待API URL?
答案 0 :(得分:1)
您没有从getApiUrl
方法返回任何内容。在post
承诺解决后,您必须退回承诺并致电getApiUrl
方法:
getApiUrl(method: string){
return this.storage.get('user_data').then((val) => {
let extUrl: string = null;
if(val){
extUrl = '?token='+val.token;
}
return "http://localhost/api/"+method+extUrl;
}).catch(err=>{
console.log('Your data don\'t exist and returns error in catch: ' + JSON.stringify(err));
return '';
});
}
this.service.getApiUrl("method_name")
.then((url) => {
this.http.post(url, data, options);
});