Последовательное выполнение функций в объекте массивов js

не получается выполнить последовательное выполнение функций в объекте массивов. Для примера у меня есть объект:

{ string1: "string1",
string2: "string2",
string3: "string3"}

и есть 2 функции независимые друг от друга, например первая функция выводит в консоль значение строки, а вторая например делает все буквы большими в строке, затем выводит в консоль эту строку. И эти функции должны выполняться последовательно к каждой строке: т.е. к string1 сначала должна быть применена функция, которая просто выводит значение, а потом которая меняет это значение, потом эти функции применяются к массивы string2 и так далее должно быть так: string1 STRING1 string2 STRING2... В каждой функции я пытался в цикле for in для объекта применить setinterval, и затем их через function().then(function2); запустить, но функции выполняются не так как надо

let obj={
    first: "abc",
    second: "def",
    third: "ghj"
}
let arr, arr1;
async function show() {
    let i = 0;
    return new Promise((resolve, reject)=> {
        for (let key in obj) {
            const timeSpin=  setTimeout(() => {
    console.log(obj[key]);
            }, 300)
        const error = false;
        if (!error) {
          resolve();
      } else {
          reject ('Error: something went wrong')
      }
  }
  });
}

  async function change () {
    return new Promise((resolve, reject)=> {
        setTimeout(() => {
          }, 150);  
        for (let key in obj) {
          const timeSpin=  setTimeout(() => {
             console.log(obj[key].toUpperCase());
          }, 300)
     }
             const error = false;
             if (!error) {
               resolve();
           } else {
               reject ('Error: something went wrong')
           }
       })
       };
  show().then(change);

Ответы (1 шт):

Автор решения: Stepan Kasyanenko

Судя по вашему описанию, вам надо нечто подобное. Но я не знаю, в каких реальных кейсах это может понадобиться.

let obj = {
  first: "abc",
  second: "def",
  third: "ghj"
}

function show() {
  let i = 1;
  for (let key in obj) {
    setTimeout(() => {
      console.log(obj[key]);
    }, i * 300);
    i++;
  }
}

function change() {
  let i = 1;
  for (let key in obj) {
    const timeSpin = setTimeout(() => {
      console.log(obj[key].toUpperCase());
    }, i * 400);
    i++;
  }

};
show();
change();

→ Ссылка