如何确保异步方法已完成

How to ensure asynchronous method has completed

本文关键字:异步方法 已完成 确保 何确保      更新时间:2023-09-26

我使用的是使用JavaScript 的异步/承诺方法

以下是我的代码片段:

var func = new instance.web.Model("session.table").get_func("check_session_state");
func(session_id).then(function(res) {
    localStorage.setItem('session_state', res);
});
if (localStorage.getItem('session_state') == inactive)
    alert("Session Inactive !");

问题是"if"条件在session_state变量设置之前被调用,并引发错误。在继续执行之前,我如何确保结果可用?

如果您想确保它也设置为.then(),那么您的If代码也是:

var func=新实例.web.Model("session.table").get_func("check_session_state");

func(session_id)
.then(function(res) {
    localStorage.setItem('session_state', res);
})
.then(function(){
  if (localStorage.getItem('session_state') == inactive) {
    alert("Session Inactive !");
  }
});

我还建议jshint您的代码。

将if条件移动到回调函数中。

func(session_id).then(function(res) {
    localStorage.setItem('session_state', res);
    if (localStorage.getItem('session_state') == inactive)
        alert("Session Inactive !");
});