-1

我正在使用 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);
  }
4

1 回答 1

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最终以 value 解决"Test"

于 2015-07-07T00:19:54.957 回答