我在将服务返回的承诺转换为控制器时遇到问题。我想要的是从promise中包含的数据创建一个JSON对象数组。这是我在控制器中收到的内容:
以下是用于打印该数据的行:
console.log("controller unmatched: ", unmatched.getData(sFilter));
这里"无与伦比的#34;是服务,getData()是它的功能。
谢谢!
答案 0 :(得分:7)
承诺代表将来某个时间可用的价值,或永远不会。这意味着您的unmatched.getData()
函数无法返回其最终价值。
您需要做的是让unmatched.getData(sFilter).then(function(result) {
console.log("controller unmatched: ", result);
});
返回实际的承诺,然后在该承诺解决时采取行动:
var siteRoomMap = new Map;
// (algorithm to fill the map)
console.log('in start');
console.log(siteRoomsMap);
console.log(siteRoomsMap.size);
答案 1 :(得分:2)
Promise工作异步:
unmatched
.getData(sFilter)
// wait for its resolution
.then(data => console.log(JSON.stringify(data))
;
答案 2 :(得分:1)
我相信你真正想做的就是保存承诺所解决的价值,而不是承诺本身。
unmatched.getData(sFilter).then(response => {
const json = JSON.stringify(response);
});
这是由于承诺的性质 - 它们是异步的。
Promise对象表示异步操作的最终完成(或失败)及其结果值。
答案 3 :(得分:0)
如果你想从promise中获取JSON对象,我想你可以使用下面的代码行
response.json()