【问题标题】:Typescript/Javascript Promise not enteredTypescript/Javascript Promise 未输入
【发布时间】: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('--&gt; in chat promise: data '+data); 未执行。

【问题讨论】:

  • 您的loadChats 电话在哪里?
  • 哦,我明白了,它首先调用loadChats
  • 在你的openDatabase():中,你没有调用resolve,试着把resolve(messagesData);
  • 另外,你也不要让你的错误级联,在大多数情况下,这不是你想要的,你会得到 console.log 消息,但任何调用它的方法都不会得到通知。
  • 感谢 Keith, (resolve(messagesData);) 让它现在工作。注意到错误,我将进行更改。感谢您的帮助。

标签: javascript typescript promise


【解决方案1】:

在您的 openDatabase(): 中,您没有调用解析,请尝试输入 resolve(messagesData);

【讨论】:

  • 请让用户将评论添加到答案中或将您的答案社区维基。
  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @Sherif 实际上,确实如此。
猜你喜欢
  • 2019-01-14
  • 2018-03-06
  • 2021-01-09
  • 2017-09-04
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
相关资源
最近更新 更多