使用节点包的承诺实现解决承诺

Resolve promise using promise implementation of node package

我正在使用 uci 节点包,它在源代码中使用 Q 库来实现承诺,从而使以下承诺成为可能,但由于 deferred.resolve(),我无法解析承诺并传播 outputPromise没有被定义。 我将如何解决以下承诺并传播 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);
  }

您应该能够 return 来自 .then 处理程序的原始值,Q 将包装在一个立即解析的承诺中,并且 return 它。

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"