在JSON对象中转换promise

时间:2017-06-02 14:40:48

标签: javascript angularjs json angular-promise

我在将服务返回的承诺转换为控制器时遇到问题。我想要的是从promise中包含的数据创建一个JSON对象数组。这是我在控制器中收到的内容: Data received at controller

以下是用于打印该数据的行:

console.log("controller unmatched: ", unmatched.getData(sFilter));

这里"无与伦比的#34;是服务,getData()是它的功能。

谢谢!

4 个答案:

答案 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对象表示异步操作的最终完成(或失败)及其结果值。

来源:Promises on MDN

答案 3 :(得分:0)

如果你想从promise中获取JSON对象,我想你可以使用下面的代码行

  

response.json()