我在下面的代码中将 api 服务调用到我的应用程序中。
问题是当我调用 apiPost()
函数时,this.apiToken
值为空。
这是因为当我调用 apiPost()
时,构造函数尚未初始化且 apiToken
值尚未分配。
this.storageService.get(constant.storage_key.api_token).then((data) => {
this.apiToken = data;
//Is it possible to return Observable inside here?
});
如何等到获取到apiToken
后再调用this.httpAng.post()
?
export class MyApiService {
apiToken = "";
constructor(
private httpAng: HttpClient,
private storageService: StorageService,
) {
this.storageService.get(constant.storage_key.api_token).then((data) => {
this.apiToken = data;
});
}
apiPost(aUrl, aParams): Observable<any> {
let httpOptions: any = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.apiToken,
}),
}
return new Observable((observer) => {
// Post
this.httpAng.post(aUrl, aParams, httpOptions).subscribe(
async (data) => {
switch (data['status']) {
case 0:
observer.next(data);
break;
default:
this.alert.alertMessage(
data['message']
, () => {
observer.error(data)
}
)
observer.error(data);
}
},
async (error) => {
console.log(error)
observer.error(error);
}
);
});
}
}
答案 0 :(得分:0)
Angular observable return undefined results
根据上述帖子更改了我的代码并使用了 btn1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
JFileChooser filechooser = new JFileChooser();
filechooser.setDialogTitle("Select text file");
filechooser.showOpenDialog(null);
File openfile = filechooser.getSelectedFile();
FileInputStream fis = null;
try {
fis = new FileInputStream (openfile);
} catch (FileNotFoundException d) {
// TODO Auto-generated catch block
d.printStackTrace();
}
BufferedReader br = new BufferedReader (new InputStreamReader (fis));
String line = null;
try {
line = br.readLine();
while (line != null) {
String[] text = line.split(";");
textbox.append(text);
line = br.readLine();
}
} catch (IOException f) {
// TODO Auto-generated catch block
f.printStackTrace();
}
try {
br.close(); //closes the file
} catch (IOException g) {
// TODO Auto-generated catch block
g.printStackTrace();
}
}
和 from
中的 rxjs
。