首页 > 解决方案 > 在 map 函数上使用 Promise

问题描述

我有一个数组,我想在这个数组上使用 Promise:

let check_duplicate_phone  = store.state.lines.map(function (item) {
    return core.checkIsPhoneDuplicate(item.phone , item.phone_significant);
});

let res  = await Promise.all(check_duplicate_phone).then(function(values) {
    console.log(values);
});

这是checkIsPhoneDuplicate功能:

async checkIsPhoneDuplicate(phone , phone_significant) {
    var data = {
        'phone': phone ,
        'phone_significant' : phone_significant
    }
    let res = await Axios.post(checkPhoneDuplicate_route, data)
        .then(response => {                    
            return response.data;
        }).catch(error => console.log(error));
    return res;
}

但它不等待响应,只需运行下一步。我知道它应该曾经喜欢这个,我已经阅读了这个答案但我没有发现我的错误在哪里。

谢谢。

标签: javascriptpromise

解决方案


编辑:删除了不正确的解释,如评论中所指出的。这种方法确实有效,但没有解决 OP 的要求。根据评论,OPs 代码也应该像这段代码一样工作,所以可能会遗漏一些东西。


function checkIsPhoneDuplicate(phone, phone_significant) {
  var data = {
    phone: phone,
    phone_significant: phone_significant
  };

  return Axios.post(checkPhoneDuplicate_route, data)
    .then(response => response.data)
    .catch(error => console.log(error));
}

async function runCheck() {
  let check_duplicate_phone = store.state.lines.map(function(item) {
    return core.checkIsPhoneDuplicate(item.phone, item.phone_significant);
  });

  let res = await Promise.all(check_duplicate_phone).then(function(values) {
    console.log(values);
  });
}

推荐阅读