代码之家  ›  专栏  ›  技术社区  ›  Austin Meyers

我不能向本机javascript承诺添加静态值吗?

  •  2
  • Austin Meyers  · 技术社区  · 6 年前

    我正在遍历一个对象数组,以构建一个我希望并行等待的承诺集合。我需要一个特定的属性(与承诺无关)来保持结果,但我不能仅仅将其添加为承诺的属性,当承诺解决时,它就会消失:

    let arrayOPromises = someArrayOfValues.map((promiseParams) => {
       let response = someFunctionThatReturnsAPromise(promiseParams);
       response.valueINeedToPersist = promiseParams.objectPropertyINeed; //unique to each iteration of map()
       return response;
    });
    
    await Promise.all(arrayOPromises);
    
    // gives me the resolved promises, but not the added value
    
    // [resolvedPromise1, resolvedPromise2];
    
    // resolvedPromise1.valueINeedToPersist === 'undefined'
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Bergi    6 年前

    我需要一个特定的属性(与承诺无关)来坚持结果

    是,然后将其添加到结果中,而不是添加到承诺对象中:

    const arrayOPromises = someArrayOfValues.map(async (promiseParams, objectPropertyINeed) => {
       const response = await someFunctionThatReturnsAPromise(promiseParams);
    //                  ^^^^^
       response.valueINeedToPersist = objectPropertyINeed;
       return response;
    });
    
    await Promise.all(arrayOPromises);