在 TypeScript 代码中,如果你使用该函数并且传递一个变量作为参数,它是不会直接改变该变量的值的。这是因为 JavaScript 中的参数是按值传递的。所以,在函数内部对 wxId 的修改不会影响到原始变量。
如果你想要在函数外部获取到修改后的值,可以考虑以下几种方法:
- 使用回调函数:将需要对
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 的值
});
- 使用 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助手提供,问题来源于学员提问




