$scope.newPost.content = "Part 2 of phrase"
$scope.newPost.content = Phrase.get({id: $scope.newPost.phrase_id}).$promise.then(
(result) ->
return result.content + " " + $scope.newPost.content
)
console.log($scope.newPost.content)
这应该输出我的连接字符串。相反 $scope.newPost.content 返回:
Object {then: function, catch: function, finally: function}
POST http://localhost:3000/api/v1/posts.json 422 (Unprocessable Entity) //content cant be blank
我做错了什么。
最佳答案
console.log 行位于异步调用之外,这意味着它将在检索资源之前运行。
- 代码中的事件顺序是:
- 将字符串分配给
scope.newPost.content
- 开始检索资源。
- 为
scope.newPost.content
分配一个新值,并立即返回 get,这看起来像一个 Promise 对象。 - 将此 Promise 对象写入控制台日志。
- 接收资源获取调用的结果。
- 将此调用的结果分配给
scope.newPost.content
- 将字符串分配给
正如您应该看到的,第 4 - 6 项的顺序与您希望的顺序不同。
如果要写入异步调用的结果,则需要在 Promise 解决之后进行。最简单的位置是在 then
回调函数中。
关于javascript - $resource 的 GET 请求返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223940/