javascript - $resource 的 GET 请求返回未定义

标签 javascript angularjs

$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 行位于异步调用之外,这意味着它将在检索资源之前运行。

  • 代码中的事件顺序是:
    1. 将字符串分配给 scope.newPost.content
    2. 开始检索资源。
    3. scope.newPost.content 分配一个新值,并立即返回 get,这看起来像一个 Promise 对象。
    4. 将此 Promise 对象写入控制台日志。
    5. 接收资源获取调用的结果。
    6. 将此调用的结果分配给 scope.newPost.content

正如您应该看到的,第 4 - 6 项的顺序与您希望的顺序不同。

如果要写入异步调用的结果,则需要在 Promise 解决之后进行。最简单的位置是在 then 回调函数中。

关于javascript - $resource 的 GET 请求返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223940/

相关文章:

javascript - Node js( Mongoose )没有响应

javascript - 无法在 Angular 中注入(inject) ngRoute 依赖项

javascript - ng-click父div的子复选框

javascript - 类型错误 : Cannot read property 'mytext' of undefined in angularjs

javascript - 如何滚动到 ng-template 中的 div?

javascript - 插件 iframe-resizer 获取parentIFrame

javascript - HTML输入到php然后返回到input

javascript - 使用javascript获取输入数组键值的最佳方法

javascript - 简写 if 语句总是返回 true

javascript - 从 JSON 文件中对单词进行 Angular 动态搜索