2017-02-10 8 views
0

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

Вот мой модифицированный метод getForecast. Оригинал можно найти здесь: https://wit.ai/docs/quickstart

var weather = require('weather-js'); 
 

 
    const actions = { 
 
    send(request, response) { 
 
    const {sessionId, context, entities} = request; 
 
    const {text, quickreplies} = response; 
 
    console.log('sending...', JSON.stringify(response)); 
 
    }, 
 
    getForecast({context, entities}) { 
 
    var location = firstEntityValue(entities, 'location'); 
 
    weather.find({search: location, degreeType: 'F'}, function(err, result) { 
 
     if(err){ 
 
      context.missingLocation = true; 
 
      delete context.forecast; 
 
     }else{ 
 
      var temperature = result[0].current.temperature; 
 
      context.forecast = temperature+ ' degrees in '+location; // we should call a weather API here 
 
      delete context.missingLocation; 
 
      fs.writeFile("weather.json",JSON.stringify(result)); 
 
     } 
 
     return context; 
 
    }); 
 
    }, 
 
};

ответ

0

Так что вы хотите сделать синхронный вызов к погодным апи, но узел не поощрять его. Способ получения синхронного вызова - использовать Promises.

Ref - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

Также ниже ссылка на собственную реализацию догадок погоды бота, вы можете увидеть, как используются обещания

https://github.com/wit-ai/witty-weather/blob/master/src/createEngine.js

 Смежные вопросы

  • Нет связанных вопросов^_^