循环里 有异步请求 怎么拼接字符串

self.currtObj.list.forEach(function(item){

            if(item.content.sendState){    //自己发送
                var srehtml = Jmconf.sendstr_mine;
                if(item.content.msg_type=='image'){
                    JIM.getResource({
                        'media_id' : item.content.msg_body.media_id,
                    }).onSuccess(function(data) {
                        var srcimg = '<img style="width:100px" src="'+ data.url +'" alt="">'
                        console.log( data.url);
                        srehtml = srehtml.replace('{{jmcell.content.msg_body.text}}', srcimg);
                        htmlset+=srehtml
                    })
                }
                
            
            }
        
    })
阅读 2.2k
2 个回答

能用Promise吗?如果可以,用Promise.all(...).then(...)

在then回调中,所有异步请求都完成,可以在里面拼接字符串。

function getData() {
    JIM.getResource({
        'media_id' : item.content.msg_body.media_id,
    }).onSuccess(function(data) {
        retrun data
    })
}

self.currtObj.list.forEach(function(item){
    if(item.content.sendState){    //自己发送
        var srehtml = Jmconf.sendstr_mine;
        if(item.content.msg_type=='image'){
            let data = getData()
            var srcimg = '<img style="width:100px" src="'+ data.url +'" alt="">'
            console.log( data.url);
            srehtml = srehtml.replace('{{jmcell.content.msg_body.text}}', srcimg);
            htmlset+=srehtml
        }
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题