我很难理解使用回调将已解决的Promise的值返回给函数的方法。我正在开发一个国际象棋应用程序,在该应用程序中,我使用ajax将板数据发送到Flask后端,进行一些计算,然后将结果发送回前端,以用于客户端script.js文件中,以进行进一步的决策逻辑。我可以将数据发送到Flask,并获得响应,但是我在将ajax响应返回给函数的逻辑上遇到麻烦。
// ajax function to POST data to server, and get response back
var evaluateBoard = function (game) {
return $.ajax({
type: "POST",
url: "/api/predict",
data: JSON.stringify({'turn':game.turn(), 'board':game.board()}),
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true,
contentType: 'application/json; charset=utf-8',
error: function(xhr, status, error){
var errorMessage = xhr.status + ': ' + xhr.statusText
console.log(errorMessage)
}
}).done(function(res) {
var score = res.score
return score
});
};
// function that calls ajax function and needs to return value of resolved promise
var minimax = function (depth, game, alpha, beta, isMaximisingPlayer) {
positionCount++;
if (depth === 0) {
var score = evaluateBoard(game)
const result = score.then(function(data) {
return -data['score']
})
console.log(result)
return result
}
// { unrelated code . . . }
minimax()
应该返回一个介于0和1之间的值result
,但我得到的是承诺。我可以访问.then()
中的值。函数,但不将其返回给minimax()
。我的期望是,一旦兑现承诺,就可以从data['score']
返回值.then()
。