Как мне выполнить требование синхронного выполнения в Node.js - PullRequest
0 голосов
/ 16 октября 2019

У меня есть требование, когда мне нужно вызвать другую функцию для записи данных, прежде чем я действительно выполню следующий набор операций.

, так что вот что я делаю, но это не работает. функция a хранится в общей библиотеке abc

var a = (req,callBack) =>{
DB Operation
.
.
.
.
callBack(null,result);
}

var b = (req,callBack) =>{
const c = await abc.a(req,response);
DB Operation
.
.
.
.
.
callBack(null,result);
}

, когда я делаю const c = await abc.a (req, response);он выдает ошибку «ожидание действительно только в асинхронной функции», но я видел примеры, где используется await следующим образом.

Можете ли вы помочь мне с этим.

Ответы [ 3 ]

1 голос
/ 16 октября 2019

Вы не используете async / await должным образом. Await работает только внутри асинхронных функций. Так что сделайте вашу функцию асинхронной.

var b = async (req,callBack) =>{ // made this function async
    abc.a(req, (_, res) => {
        DB Operation
        .
        .
        .
        .
        .
        callBack(null,result);
    });
}
0 голосов
/ 16 октября 2019

await допустимо только в том случае, если вызываемая функция возвращает promise или помечена async.

Кроме того, await необходимо использовать из функции async.

В вашем случае оба являются ложными.

Не используйте async / await ...

var b = (req,callBack) =>{
 abc.a(req,c=>{
  DB Operation
  callBack(null,result);
 });
}

Вы можете заключить свои функции в функции async, если вы настаиваете наиспользуя этот синтаксис.

0 голосов
/ 16 октября 2019

Ваш код хотел бы.

async function a () {
  const b = await funcX()
}

или

const b =  async () => {
  const b = await funcX()
}

вот так

...