Javascript Promise.all()中的返回值

Javascript Promise.all()中的返回值,javascript,vuejs2,php-7.2,laravel-5.7,Javascript,Vuejs2,Php 7.2,Laravel 5.7,我在Laravel 5.7中使用Vue 2,在Vue组件中,我在v-for循环中有以下内容: <p v-html="getFacebookObjectInteractions(activities.id)"></p> 我需要最后一个return来将.join()的结果发送到v-html,但我得到的只是{} 但是console.log(messageString)吐出正确的字符串值: 参与度:2条评论,3条喜欢,1份分享 如果我这样做: var something = P

我在Laravel 5.7中使用Vue 2,在Vue组件中,我在
v-for
循环中有以下内容:

<p v-html="getFacebookObjectInteractions(activities.id)"></p>
我需要最后一个
return
来将
.join()
的结果发送到
v-html
,但我得到的只是
{}

但是
console.log(messageString)吐出正确的字符串值:

参与度:2条评论,3条喜欢,1份分享

如果我这样做:

var something = Promise.all(...
。。。我必须在上面做一个
.then()
,以获得承诺中的价值,我的处境与我开始时一样


任何想法?

getFacebookObjectInteractions
返回一个承诺对象,而不是您期望的对象。这就是html没有出现的原因。您应该改为将
v-html
设置为数据或计算属性。安装组件后,您可以调用
getFacebookObjectInteractions
,最终更新该属性,然后Vue将使用正确的html重新呈现组件

根据您的代码,有点不清楚活动从何而来,因此您可能需要进一步重构代码,但这应该会给您提供基本的想法

因此,在HTML中:

然后在Vue组件中

{
    data(){
        return { html : "" }
    }
    methods : {
        getFacebookObjectInteractions(object_id){
            // ...
            Promise.all(...).then( (messages) => {
                // ...
                // Update your reactive property
                this.html = messageString
            })
        }
    }
    // Called when the component is mounted
    mounted(){
       this.getFacebookObjectInteractions(activities.id)
    }
}

请参阅此处以获取更深入的示例:

对框架没有任何线索,但如果v-html不支持承诺,则您将不得不以不同的方式考虑它。
getFacebookObjectComments
(等)不应接受回调,而应返回承诺本身。@epascarello,是否可以在
getFacebookObjectInteractions()中获取承诺之外的值
并从那里返回它?为什么不使用wait?@SergioEscudero我尝试了多种不同的组合,但它们要么不起作用,要么给我一个编译错误。那篇文章没有包含任何与计算属性有关的内容,或者处理多个方法。不,主要思想是如何使用异步方法,在本例中是
Promise.all
来更新应用程序的状态。异步方法的作用并不重要,重要的是更新vue组件中的被动属性。这是我必须开始编写的代码,但我需要将三个不同方法的结果组合成一个字符串,从而使用承诺。这不是您所拥有的。请注意,p元素的html是如何绑定到vue组件上的被动属性的,而不是
getFacebookObjectInteractions
的结果。通过这种方式,当您从代码中的任何位置更新该属性时,vue会像魔术一样将html放入您的组件中。当我第一次开始编码时,我拥有您所拥有的,但正如我所说的,当组合多个方法的值时,它将不起作用。我不会对
标记进行更新,因为
v-html
的缘故,这也不会起作用。如果我从
getFacebookObjectInteractions()
返回一个值,它就可以正常工作。
{
    data(){
        return { html : "" }
    }
    methods : {
        getFacebookObjectInteractions(object_id){
            // ...
            Promise.all(...).then( (messages) => {
                // ...
                // Update your reactive property
                this.html = messageString
            })
        }
    }
    // Called when the component is mounted
    mounted(){
       this.getFacebookObjectInteractions(activities.id)
    }
}