ZBLOG

const getWxId = async (wxId:any)=>{ const xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState === 4) { console.log(xhr.response); if (xhr.response !== "FAILED") wxId = xhr.response; els...

在 TypeScript 代码中,如果你使用该函数并且传递一个变量作为参数,它是不会直接改变该变量的值的。这是因为 JavaScript 中的参数是按值传递的。所以,在函数内部对 wxId 的修改不会影响到原始变量。

如果你想要在函数外部获取到修改后的值,可以考虑以下几种方法:

  1. 使用回调函数:将需要对 wxId 进行处理的逻辑放入回调函数中,并在请求完成后调用该回调函数来处理修改后的值。
const getWxId = async (wxId: any, callback: (response: string) => void) => {
  // ...
  xhr.onreadystatechange = () => {
    if (xhr.readyState === 4) {
      console.log(xhr.response);
      if (xhr.response !== "FAILED")
        callback(xhr.response); // 调用回调函数传递修改后的值
      else
        callback("");
    }
  };
  // ...
};

// 使用示例:
getWxId(wxId, (response) => {
  wxId = response; // 在回调函数中修改 wxId 的值
});
  1. 使用 Promise:可以封装 getWxId 函数成一个返回 Promise 对象的形式,然后通过异步操作来获取修改后的值。
const getWxId = async (wxId: any): Promise<string> => {
  return new Promise<string>((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        console.log(xhr.response);
        if (xhr.response !== "FAILED")
          resolve(xhr.response); // 修改成功,返回修改后的值
        else
          resolve(""); // 修改失败,返回空字符串
      }
    };
    const api = `/mmap_wxopenid?k=${encodeURIComponent(k.value)}`;
    xhr.open("GET", `${window.location.origin}${api}`);
    xhr.send();
  });
};

// 使用示例:
(async () => {
  wxId = await getWxId(wxId); // 使用 async/await 等待 Promise 结果,并将结果赋值给 wxId
})();

这样你就可以在函数外部获取到 getWxId 函数内部修改后的值了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13760

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?