无法从诺言返回输出

时间:2018-06-27 21:19:38

标签: angular ionic2

我有以下代码

getNotesContent(){  
        this.svsDb.getNotes(this.order_info.orderid).then(
            data=>{
                console.log("the list of notes content...", data);
                data.history.forEach( (notes:any)=>
                this.noteList.push(
                    {
                        stack:[
                            {text: 'Date: ' + notes.created_date},
                            {text: 'Note/Comments: ' + notes.notes},
                            { text: '--------------------------' },
                        ]
                    }
                )
            )

            }); 

       return this.noteList;    

}

我的返回值始终为空。有人可以让我知道如何让该函数返回值吗?谢谢您的帮助。

A

1 个答案:

答案 0 :(得分:0)

您不能,一个承诺会在以后解决。当您调用getNotesContent()函数时,它将在没有任何结果之前返回。看起来您正在返回数组,该数组将在以后填充,因此将具有您想要的值。但是,如果呼叫者需要等待并处理这些结果,那么您应该返回一个诺言,并且呼叫者应在其上呼叫then()

getNotesContent(){  
    return this.svsDb.getNotes(this.order_info.orderid)
    .then(data => {
        console.log("the list of notes content...", data);
        data.history.forEach((notes:any) => {
            this.noteList.push(
                {
                    stack:[
                        {text: 'Date: ' + notes.created_date},
                        {text: 'Note/Comments: ' + notes.notes},
                        {text: '--------------------------'},
                    ]
                }
            );
        });
        return this.noteList; // this will now be the promise results
   }); 
}

// sample call
getNotesContent().then(noteList => console.dir(noteList));