使用node包的promise实现来解析promise

Resolve promise using promise implementation of node package

本文关键字:promise 实现 包的 使用 node      更新时间:2023-09-26

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

你应该能够简单地从.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"