使用返回承诺的函数来承诺所有

Phi*_*l_t 2 javascript promise es6-promise

我正在尝试使用Promise.all()但创建一系列承诺正在调用我的所有承诺。(使用 axios)

export function myPromise(a, b, data){
    return my.patch(`/some/${a}/path/${b}`, data, {
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
    })
 }
Run Code Online (Sandbox Code Playgroud)

然后我尝试在这里创建一个数组:

 let otherVal = 12
 let group = [{id: 1}, {id: 2}, {id: 3}];
 let data = {
                // somedata
            }
 let promises = group.map(item => {
            return saveMapping(otherVal, item.id, data);
        })

 Promise.all(promises)
Run Code Online (Sandbox Code Playgroud)

在它甚至承诺所有之前,它开始承诺,所以很明显我在映射它时调用了该函数。如何将其添加到数组中作为参考?

小智 5

将函数存储在数组中,然后在以下时间调用它们Promise.all

let promiseFuncs = group.map(item => () => saveMapping(otherVal, item.id, data));

Promise.all(promiseFuncs.map(f => f()));
Run Code Online (Sandbox Code Playgroud)

  • 不,除了更复杂之外,这没有任何区别。 (2认同)