【发布时间】:2017-02-13 15:29:31
【问题描述】:
我有以下 Typescript 代码。我有一个promise 需要填写并返回。但是,promise 没有按预期工作。任何建议表示赞赏。
chats.ts
private loadChats(): void {
let promiseRefreshedLocalDatabase: Promise<any> = this.chatsStorageService.openDatabase();
promiseRefreshedLocalDatabase.then((data) => {
console.log('--> in chat promise: data '+data);
});
}
chatsStorageService.ts
public openDatabase(): Promise<any> {
let promise: Promise<any> = new Promise<any>(resolve => {
this.database = new SQLite();
this.database.openDatabase({ name: "data.db", location: "default" }).then(() => {
let promiseChats: Promise<Array<Chat>> = this.refreshChats();
return promiseChats.then((chatsData) => {
let promiseMessages: Promise<Array<Message>> = this.refreshMessages();
return promiseMessages.then((messagesData) => {
});
});
}, (error) => {
console.log("OPEN ERROR: ", error);
});
});
return promise;
}
输出
我希望:
refreshChats refreshMessages --> in chat promise: data [object]
但只能从对 this.refreshChats() 和 this.refreshChats() 的调用中获取:
refreshChats refreshMessages
即console.log('--> in chat promise: data '+data); 未执行。
【问题讨论】:
-
您的
loadChats电话在哪里? -
哦,我明白了,它首先调用
loadChats -
在你的openDatabase():中,你没有调用resolve,试着把resolve(messagesData);
-
另外,你也不要让你的错误级联,在大多数情况下,这不是你想要的,你会得到 console.log 消息,但任何调用它的方法都不会得到通知。
-
感谢 Keith, (resolve(messagesData);) 让它现在工作。注意到错误,我将进行更改。感谢您的帮助。
标签: javascript typescript promise