我正在使用angularjs构建聊天模块。
我建立了一个算法来创建新的聊天,这是它的作用:
点击新的聊天按钮
显示可与之聊天的人的列表
选择一个人(单击),然后调用函数createChat
创建聊天(在js代码中)在本地创建新的聊天对象,并带您进入聊天页面
当您提交新消息时,如果chat_id = 0,它将在数据库中使用$ http发布请求创建新的聊天,并且成功地将chat_id设置为从http发布请求返回的chat_id。
我的问题是在角度上,请求是异步的,因此在成功函数中设置chat_id不会在成功函数之外进行更新,然后在我发送下一条消息时chat_id仍为0。
我尝试阅读有关angularjs $ q的信息,但不明白它如何提供帮助。
最佳答案
$q
只是一个Promise库,这意味着它使编写异步代码变得更容易且可读性更高。从本质上讲,承诺是异步调用最终结果的占位符。它们允许您链接对最终结果起作用的函数,但只有在获得结果后才被调用。它们只是异步代码之上的抽象-它们不一定有助于解决您的问题。有关更多信息,请参见promise的MDN's description。
您说“请求是异步的,因此在成功函数中设置chat_id
不会在成功函数之外进行更新”,但是该问题与异步代码无关。您确定成功功能实际上正在运行,并且没有任何错误吗?如果真是这样,那可能只是适当范围界定的问题。您介意发布一些相关代码吗?
关于javascript - angularjs异步http发布更新范围数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27658940/