Жду обещания в другой функции - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь реализовать следующий псевдокод в приложении nodejs -

async task1(){
  await asyncFunc();
  return true;
}

let task1IsDone = await task1();

if(task1IsDone){
  task2();
}

Но из всей документации, которую я прочитал в async / await, похоже, что обычный способ использования async await - этокак -

let data;
  data = await task1();
task2(data);

Есть ли способ использовать async await так, как я пытаюсь использовать в моем псевдо-коде?Есть ли какая-либо причина, чтобы не пытаться сделать это таким образом (возвращается просто логическое значение)?

Реальный код -

  getList: async function(type,startDate){
    request(BASE_URL+'data.json?tz=America/Vancouver&ftime=DeviceEntryDate&stime='+startDate+'&fids='+type, async (error, response, body) => {    
      console.log('error:', error);
      console.log('statusCode:', response && response.statusCode); 
        await fs.writeFile('downloads/'+type+'.json',body, (err) =>{
          if(err) {
              console.log(err);
          }
          console.log('5');
        });
        console.log('7');
        return true;              
    });
  }

или

  getList: async function(type,startDate){
    await  request(BASE_URL+'data.json?tz=America/Vancouver&ftime=DeviceEntryDate&stime='+startDate+'&fids='+type, (error, response, body) => {    
      console.log('error:', error);
      console.log('statusCode:', response && response.statusCode); 
        fs.writeFile('downloads/'+type+'.json',body, (err) =>{
          if(err) {
              console.log(err);
          }
          console.log('5');
        });
        console.log('7');

    });
    return true; 
  }

1 Ответ

0 голосов
/ 24 ноября 2018

Если ваш запрос возвращает обещание, это будет выглядеть так:

getList: async function(type,startDate){
  try {
    const response = await request(BASE_URL+'data.json?tz=America/Vancouver&ftime=DeviceEntryDate&stime='+startDate+'&fids='+type);
    console.log('statusCode:', response.statusCode); 
    await fsPromises.writeFile('downloads/'+type+'.json',body);
    console.log('5');
    return true
  } catch (error) {
    console.log('error:', error);
    return false; //false if error?
  }
}

Также обратите внимание, что fs не возвращает обещание, поэтому вам нужно использовать экспериментальный fsPromises

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...