У меня возникли некоторые проблемы с получением пользовательского обещания работать с моим маленьким приложением, над которым я работаю.Возвращение пользовательского обещания
Вот сокращенный вариант моего app.js
var Promise = require('promise');
var Commands = require('./commands');
var respond = function() {
var messageToRespondWith = command[0].response;
if(typeof(command[0].response) == "function"){
console.log('is function');
command[0].response().then(console.log('finished'));
}
var response = template(messageToRespondWith, {user: user, channel: channel, message: message});
client.say(channel, response);
};
И команды выглядит примерно так
var config = require('./config');
var Promise = require('promise');
module.exports = [
{
trigger: "!random",
response: function(){
var unirest = require('unirest');
var promise = new Promise(function(resolve, reject) {
unirest.post("https://andruxnet-random-famous-quotes.p.mashape.com/cat=movies")
.header("X-Mashape-Key", config.mashapeKey)
.header("Content-Type", "application/x-www-form-urlencoded")
.header("Accept", "application/json")
.end(function (result) {
console.log(result.status);
// Handle errors
if(result.status != 200){
return promise.reject(result.body);
}else{
var json = JSON.parse(result.body);
return promise.resolve(json.quote);
}
});
});
},
permission: null
},
]
The app.js
проверки кода, чтобы увидеть, если тип возвращаемого значения является функцией, а если он выполняет его и должен сохранить это переменной и передать это следующей функции.
Мне нужно использовать обещание, потому что, очевидно, нижний вызов функции client.say()
не ждет, пока возвращаемое значение вызовет API-функцию функции из файла commands.js
.
Когда я пытаюсь выполнить этот код в моем терминале я получаю эту ошибку ...
TypeError: Cannot read property 'then' of undefined
at respond (/***/app.js:39:28)
Так что я не совсем уверен, почему это происходит, я все еще учусь узел и лучший способы сделать что-то, поэтому, возможно, я вообще ошибаюсь.
Основные функциональные
Это подергивание IRC чат бот, который будет читать команды набираясь в и реагировать в чате с заданным сообщением. В некоторых случаях я хочу сделать какую-то функцию, прежде чем выплевывать сообщение. Это один из таких случаев. Вы можете увидеть мой полный код app.js
here Я не хотел вставлять все это, потому что он длинный и включает в себя части, которые, как я думал, здесь не актуальны.
1) вы не отправлял код, где вы на самом деле вызова 'respond', 2) в вашем файле' 'команды respond' функции [0]', кажется, очень четко определено. Вы хотели передать это как аргумент? – azium
О, я вижу вас, я думаю, вы хотите сказать: 'var command = require ('./ commands')' – azium
Вот полное repo минус команды и файлы конфигурации, если вы хотите увидеть полный код, я не хочу здесь, потому что я не думаю, что это актуально, но может быть. https://github.com/Jordan4jc/super-fly-twitch-bot – Jordan