我正在使用angularjs构建聊天模块。
我构建了一个创建新聊天的算法,这就是它的作用:
我的问题是,在angular中,请求是异步的,所以在success函数中设置chat_id并不会在success函数之外更新它,然后当我发送下一条消息时,chat_id仍为0 ..
我试过阅读angularjs $ q,但无法理解它有多帮助。
答案 0 :(得分:1)
$q
只是一个promise库,这意味着它使编写异步代码更容易一点,更具可读性。承诺本质上是异步调用的最终结果的占位符。它们允许您链接作用于最终结果的函数,但只有在获得后才会被调用。它们只是异步代码之上的抽象 - 它们不一定有助于解决您的问题。有关详细信息,请参阅承诺的MDN's description。
你说"请求是异步的,因此在成功函数中设置chat_id
不会在成功函数之外更新它,"但是这个问题与异步代码无关。您确定成功功能实际上正在运行,并且您没有收到任何错误吗?如果是这种情况,那可能只是一个适当的范围问题。你介意发布一些相关的代码吗?
答案 1 :(得分:0)
您有两种可能性: 1.在第一条消息之后冻结(即显示等待图标)聊天,直到你收到chat_id的响应。 2.在发送第一条消息之前,生成一些唯一的字符串 - 所有消息都将此字符串作为聊天ID,直到真正的聊天ID到达。在服务器端处理此问题。