【问题标题】:How can i fix this async call我该如何解决这个异步调用
【发布时间】:2020-07-14 19:29:56
【问题描述】:

我正在尝试设置一个仅在 ajax 调用后返回结果的承诺

但是在我的代码中,结果在 ajax 完成之前返回 null,从控制台日志中我还可以看到它是在 checkuser 函数完成之前返回的。

我怎样才能做到这一点,我是否必须进行超时循环等待结果将值更改为 0 或 1 并设置超时限制?

 function checkUser() {  
  return new Promise((resolve, reject) => {  
  $.ajax({
  type: "POST",
  url: 'checkUserAvail.php',
  data: {value: value},
  success:  function (data) {
        resolve(data);
      },
  error: function (error)  
        {
         reject(error);
        }
   })
  })
}
    
checkUser()
  .then((data) => {
                console.log(data);
                if (data == 1)
                        {
                         outcome= 1;
                        }
                if (data == 0)
                            {   
                            outcome= 0;
                            }
                    
                })
  .catch((error) => {
    alert("An error ocurred");
  })

console.log(outcome);
return outcome;

【问题讨论】:

标签: javascript ajax promise


【解决方案1】:

console.log(outcome);
return outcome;

这段代码应该在 then 块中。

发生的事情是您试图在 Promise 解决之前返回结果。

【讨论】:

  • 这部分脚本在验证器函数中。即使我将返回结果放在 then 块中。在 then 块完成之前,函数没有结果返回
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2010-12-22
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
相关资源
最近更新 更多