代码之家  ›  专栏  ›  技术社区  ›  neophytte

通过API获取和存储MailChimp兴趣的Typescript方法

  •  0
  • neophytte  · 技术社区  · 5 年前

    我试图通过一个观众ID查询API来获取Mailchimp的兴趣;我已经创建了下面的代码,可以正确地检索所有内容,但是当我在 forEach loop,我没有得到任何存储。

    let obj = {};
    let arrays = [];
    let newdata;
    let textlist;
    
    try {
      const data = await mailchimp.lists.getListInterestCategories(MailChimpAudienceId);
      //console.log(data);
      const categories = data.categories;
      if (!categories.length) {
        console.log(`No categories found in Mail chimp list ${MailChimpAudienceId}`);
      }
      categories.forEach(async element => {
        //console.log(element.id);
        obj[element.title] = element.id;
        arrays.push(element.id);
        newdata = await mailchimp.lists.listInterestCategoryInterests(
          MailChimpAudienceId,
          element.id,
        );
        const interests = newdata.interests;
        interests.forEach(async element => {
          //console.log(element.id, element.name);
          obj[element.name] = element.id;
          arrays.push(element.id);
          textlist += "," + element.id;
        });
        // console.log(interests);
        console.log("obj0>>", obj);
        console.log("arr0>>", arrays);
        console.log("txt0>>", textlist);
      });
      console.log("obj1>>", obj);
      console.log("arr1>>", arrays);
      console.log("txt1>>", textlist);
    } catch (e) {
      console.log("err>> ", e);
    }
    console.log("obj2>>", obj);
    console.log("arr2>>", arrays);
    console.log("txt2>>", textlist);
    

    obj1>> { MickeyMouse: '21c3bbb614', Music: 'ac86c9d94b' }
    arr1>> [ '21c3bbb614', 'ac86c9d94b' ]
    txt1>> undefined
    obj2>> { MickeyMouse: '21c3bbb614', Music: 'ac86c9d94b' }
    arr2>> [ '21c3bbb614', 'ac86c9d94b' ]
    txt2>> undefined
    obj0>> {
      MickeyMouse: '21c3bbb614',
      Music: 'ac86c9d94b',
      Guitar: '9e05119885',
      Drums: 'ca5b24595d',
      Bass: '0ce6ed21da'
    }
    arr0>> [
      '21c3bbb614',
      'ac86c9d94b',
      '9e05119885',
      'ca5b24595d',
      '0ce6ed21da'
    ]
    txt0>> undefined,9e05119885,ca5b24595d,0ce6ed21da
    obj0>> {
      MickeyMouse: '21c3bbb614',
      Music: 'ac86c9d94b',
      Guitar: '9e05119885',
      Drums: 'ca5b24595d',
      Bass: '0ce6ed21da',
      'Big Ears': '5154e49101',
      News: 'e49c281f9f',
      Fundraising: 'aad8e5ba96'
    }
    arr0>> [
      '21c3bbb614',
      'ac86c9d94b',
      '9e05119885',
      'ca5b24595d',
      '0ce6ed21da',
      '5154e49101',
      'e49c281f9f',
      'aad8e5ba96'
    ]
    txt0>> undefined,9e05119885,ca5b24595d,0ce6ed21da,5154e49101,e49c281f9f,aad8e5ba96
    

    如何存储这些值,使数组、对象或文本的值位于二次循环之外?

    0 回复  |  直到 5 年前
        1
  •  0
  •   neophytte    5 年前

    看起来我的问题是异步方面的问题,如以下回答所示: Resolve await when message arrives

        setTimeout(_ => {
          // If we have categories, then display them here
          console.log(
            `Audience ID ${MailChimpAudienceId} has the interests: ${arrays}`,
          );
        }, 1000); // display after a delay
    
    推荐文章