1

Как сделать промис синхронным?

async function some() {
  var promise = new Promise((resolve, reject) => {
      setTimeout(() => resolve("Two"), 3000);
    }).then(data => {
      return data;
    }).catch(err => {
      return err;
    });

    return await promise;
}

console.log("One");
console.log(some());
console.log("Three");

Должно быть:

One
Two
Three
posix
  • 359
  • 2
  • 21

1 Answers1

1

function some() {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve("Two"), 3000);
  }).then(data => {
    return data;
  }).catch(err => {
    return err;
  });
}

(async function() { console.log("One"); console.log(await some()); console.log("Three"); })()

Yaant
  • 4,392
  • Это немного не то, что я хотел. Этой функции нельзя задать имя, а мне нужно ее экспортировать через module.exports. Она должна замораживать процесс node до тех пор пока не произойдет tcp подключение через библиотеку net. – posix Aug 30 '19 at 13:38
  • Почему нельзя? Можно. Экспортируйте и вызывайте ее так же через await. – Yaant Aug 30 '19 at 13:39
  • А вот просто "заморозить процесс" нельзя, потому что тогда подключение никогда не произойдет. Event loop, и все такое. – Yaant Aug 30 '19 at 13:44