小白提问:Promise.all该如何获取axios.then中的值

新手上路,请多包涵

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

    var appid = '20180915000207344';
    var key = 'Rnwm_ZdMug9nrE42ypSM';
    var salt = (new Date).getTime();
    var from = 'en';
    var to = 'zh';
    var query=_.map(country,function(item) {
        var str1 = appid + item.name + salt + key;
        var sign = MD5(str1);
        axios.get('http://api.fanyi.baidu.com/api/trans/vip/translate', {
                        params: {
                            q: item.name,
                            appid: appid,
                            salt: salt,
                            from: from,
                            to: to,
                            sign: sign
                        }
           }).then(function (res) {
                        var result= _.merge(item, {cn_name: res.data.trans_result[0].dst});
                        resolve(result);
                 
                    });
                });
        Promise.all(axios).then(function(result){
            console.log(result);
        }).catch(function(error){
            console.log(error);
        });

你期待的结果是什么?实际看到的错误信息又是什么?

希望promise.all可以一次性输出result。
但是最后输出的值是undefiend。
试过其他的写法最后返回的是pending状态
axios.then返回的不是一个promise对象么?
我如果想正确输出我应该怎么写才可以?

阅读 4k
2 个回答
let p = new Promise((r,j)=>{
    asios.get(...).then((x)=>{
        ...//x操作
        r(x)
    }).catch((e)=>{
        j(e)
    })
})
Promise.all([p]).then((res)=>{
    res[0]//then 之后的值
})

伪代码,帮助理解

try return axios.get...... and Promise.all(query)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题