警告:我听起来好像不知道我在这里说的是什么,因为我有点不喜欢。我正在通过大量的试错编码自学Javascript和AngularJS。
我有一些javascript代码(犹豫要在这里复制,因为它很乱),它返回一个具有以下结构的Object:
我想要保存到变量的是图片中对象。$$ state.value对应的对象。这个对象有用户名,哈希和盐,这是我关心的。我不知道所有其他像$$州的东西是什么,或者他们是如何到达那里的。
但是,如果我这样做(让我们调用主对象“whatIHave”):
var whatIWant = whatIHave.$$state.value;
这不起作用。 whatIWant为空。
有谁知道这里发生了什么?什么是$$状态,它是如何实现的,以及如何提取我想要的值?
答案 0 :(得分:12)
这是一个承诺。您需要执行以下操作:
whatIHave.then(function(whatIWant) {
// Work here
});
我强烈建议您研究一下承诺是什么(比如link)
如果您非常好奇,关于$$state
是什么以及value
是什么,我会解释一下:
promises有一个$$state
,并且angular保存了你要在pending
数组中调用的所有回调函数(所有那些你用.then
注册的函数,就像我之前解释过的那样)。
它还具有以下状态:已解决(1)和已拒绝(2)
最后,当您resolve
或reject
承诺时,您在执行该承诺时所传递的价值会保存在value
中。
你试图在这里作弊,因为当你试图访问value
时,它可能还没有(这就是async
的全部内容)。
因此,我们的想法是学习承诺的基础,学习如何使用它们,然后正确使用whatIHave
。