Разрешите обещание, используя реализацию обещания пакета узла

Я использую пакет узлов uci, который использует библиотеку Q для обещаний в их источнике и, таким образом, делает возможными следующие обещания, но я не могу разрешить обещание и распространить outputPromise из-за того, что deferred.resolve() не определен. Как бы я разрешил следующее обещание и распространил outputPromise?

var Stockfish = require('uci');
var stockfish = new Stockfish('..... /stockfish-6-64');

class Engine { ...

checkForBetterMoves(board, callback) {
    var moves = {};
    console.log('hello');
    var outputPromise = stockfish.runProcess().then(function() {
      console.log('Started');
      return stockfish.uciCommand();
    }).then(function(idAndOptions) {
      console.log('Engine name - ' + idAndOptions.id.name);
      return stockfish.isReadyCommand();
    }).then(function() {
      console.log('Ready');
      deferred.resolve("Test"); //Error deferred not defined
    });
    console.log(outputPromise);
  }

1 ответ

Решение

Вы должны просто иметь возможность вернуть необработанное значение из .then обработчик, который Q обернет в обещание, которое немедленно разрешается, и возвращает его.

var outputPromise = stockfish.runProcess().then(function() {
  console.log('Started');
  return stockfish.uciCommand();
}).then(function(idAndOptions) {
  console.log('Engine name - ' + idAndOptions.id.name);
  return stockfish.isReadyCommand();
}).then(function() {
  console.log('Ready');
  return "Test";
});

outputPromise выше, в конечном счете, разрешится со значением "Test",

Другие вопросы по тегам