我无法在 javascript 中实现 Promise。
这是我要实现 Promise 的 js 文件的片段。
var promiseToGetUsage = new Promise(function(resolve) {
setTimeout(function() {
$.getJSON('../usageService/resources/webservice/getUsageDetails',
function(data) {
console.log(data);
});
}, 1000);
});
var promiseToGetCompute = new Promise(function(resolve) {
setTimeout(function() {
$.getJSON('../usageService/resources/webservice/getComputeDetails', function(data) {
console.log(data);
});
}, 1000);
});
Promise.all([promiseToGetUsage, promiseToGetCompute]).then(function(value) {
self.isLoading(false);
self.isUsageVisible(true);
self.isComputeVisible(true);
});
在这里我不明白两件事。
- i) netbeans 检查器说“未声明全局变量“Promise””,而我认为它是内置的 js 函数
ii) 我对 (i) 做了一些研究,并在 HTML 的 script 标签中添加了以下内容
src="//cdn.jsdelivr.net/bluebird/3.5.0/bluebird.js"
现在当我调试时,它首先进入 Promise.all,但是当 web 服务完成时,它不会再次调用 Promise.all!
**********************************回答*************** *************************
感谢Benjamin Gruenbaum在评论中指出正确的方向,
解决方法,就是直接调用Promise的all方法中的$.getJson
Promise.all([
$.getJSON('../usageService/resources/webservice/getUsageDetails',
function (data)
{
console.log(data);
}),
$.getJSON('../usageService/resources/webservice/getComputeDetails',
function (data)
{
console.log(data);
})
]).then(function(value) {
self.isLoading(false);
self.isUsageVisible(true);
self.isComputeVisible(true);
});