gpt4 book ai didi

javascript - JavaScript 中的 Promise 无法正确执行

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:07 24 4
gpt4 key购买 nike

我有这一系列需要按顺序完成的步骤:

  1. 验证对象
  2. 使用 Bing 的图像搜索 API 获取图像网址
  3. 将找到的 URL 添加到对象
  4. 发出发布请求并发送对象

示例对象如下所示:

`{
options: [{
text: 'Pizza',
votes: 0,
imageURL: ""
}, {
text: 'Hot Dog',
votes: 0,
imageURL: ""
}]
};`

由于本系列中的顺序,我使用 Promise 来确保一切都按照上面指定的顺序进行。到目前为止我已经:

  function validatePoll() {
var isValid = true;
for (var i = 0; i < $scope.poll.options.length; i++) {
if (!$scope.poll.options[i].text) {
isValid = false;
break;
}
}
return isValid;
}

let promiseURL = function(searchTerm) {
return new Promise(function(resolve, reject) {
$http.get('https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=' + searchTerm + '&count=1&offset=0&mkt=en-us&safeSearch=Strict', {
headers: {
'Ocp-Apim-Subscription-Key': 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
}
}).success(function(response) {
console.log(response);
resolve(response);
}).error(function (err, status) {
reject(err);
})
})
};

let fetchImageURL = function() {
for(var i = 0; i < $scope.poll.options.length; i++) {
console.log(promiseURL($scope.poll.options[i].text));
}
}

$scope.submitChoice = function() {
var isValid = validatePoll();
if(isValid) {
fetchImageURL();
} else {
console.log("Not Valid Poll");
}
}

但最终发生的是 fetchImageURL 中的 console.log(promiseURL($scope.poll.options[i].text)); 返回一个 Unresolved promise ,而不是我想要的响应字符串。我怎样才能修复代码以确保:

  1. 使用正确的参数调用promiseURL
  2. 收到响应并可以解析
  3. 解析后的信息可以添加到 polls 对象的 imageURL 属性中

最佳答案

您看到 Promise 的打印输出是因为您正在打印 Promise。您需要处理 promise 解决/拒绝。您应该调用的是:

promiseURL($scope.poll.options[i].text)
.then(function(data){
console.log("Success",data)
})
.catch(function(error){
console.log("Error",error")
})

关于javascript - JavaScript 中的 Promise 无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44449700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com