使用节点包的承诺实现解决承诺
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"
。
我正在使用 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"
。