Разрешите обещание, используя реализацию обещания пакета узла
Я использую пакет узлов 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"
,