Порядок выполнения needle

141
19 января 2019, 03:10

Помогите пожалуйста с порядком выполнения. Не могу понять, как сделать порядок выполнения

Есть такой код:

var needle = require("needle");
var arr = ["1","2","3"];
var arr2 = ["1e","2e","3e"];
    needle.get("https://www.google.com", function(){
    for(i=0; i < 3; i++){
        console.log(arr[i]);   
        needle.get("https://www.google.com", function(){
        for(i=0; i<3; i++){
        console.log(arr2[i]);
        }
        });
    }
  });

Нужно чтобы после срабатывания этого кода результат был следующим:

1
1e
2e
3e
2
1e
2e
3e
3
1e
2e
3e

А получается вот так

1
2
3
1e
2e
3e
1e
2e
3e
1e
2e
3e
Answer 1

В needle есть поддержка Promise, попробуйте так:

// для демонстрации 
const needle = { 
  get(idx) { 
    return new Promise(resolve => { 
      setTimeout(resolve, parseInt(Math.random() * 100)) 
    }); 
  } 
} 
 
const arr = [1, 2, 3] 
const arr2 = ["1e", "2e", "3e"] 
 
needle.get('https://www.google.com').then(() => { 
  for (let i = 0; i < 3; i++) { 
    needle.get('https://www.google.com').then(() => { 
      console.log(arr[i]) 
      for (let j = 0; j < 3; j++) { 
        console.log(arr2[j]) 
      } 
    }) 
  } 
})

Если надо все прям по порядку:

// для демонстрации 
const needle = { 
  get(idx) { 
    return new Promise(resolve => { 
      setTimeout(resolve, parseInt(Math.random() * 100)) 
    }); 
  } 
} 
 
const arr = [1, 2, 3, 4, 5] 
const arr2 = ["1e", "2e", "3e"] 
 
needle.get('https://www.google.com').then(() => { 
  let lastPromise 
  for (let i = 0; i < 5; i++) { 
    let currPromise = needle.get('https://www.google.com') 
     
    if (!lastPromise) 
      lastPromise = currPromise 
 
      lastPromise.then(() => { 
        console.log(arr[i]) 
        for (let j = 0; j < 3; j++) { 
          console.log(arr2[j]) 
        } 
      }) 
  } 
})

READ ALSO
Выход из try-catch

Выход из try-catch

Использую axios для отправки запросов во vuejs 2 в laravel 5

157
Запуск N Promise параллельно с потоком в k Promise

Запуск N Promise параллельно с потоком в k Promise

Итак, я пытаюсь написать программу, запускающую N Promise с потоком в k Promise параллельноПроблема в том, что при запуске без yield sleep 1 программа запускает...

158
Как задать срок хранения ключа?

Как задать срок хранения ключа?

Как задать срок хранения ключа? как предотвратить появление модального окна после закрытия а потом октрытия браузера?

136