gpt4 book ai didi

javascript - 我如何将回调结果传递给变量并自由访问 var

转载 作者:行者123 更新时间:2023-11-29 10:57:01 24 4
gpt4 key购买 nike

我知道有很多问题与我的问题类似,但我没有看到任何好的案例可以帮助我,

我有一个来自原生函数桥的回调,这是我在 JS 上使用它的方式:

getAllParameter((data)=>{
console.log(data) // data is Javascript Object
})

我试过这个来获取 data 的值:

getAllParameter((data)=>{
return new Promise((resolve)=> resolve(showToken(data.Token)))
})

async function showToken(token){
var res = await token
return res
}

var isiToken = showToken()
console.log("isiToken")
console.log(isiToken)

但结果是:

isiToken
{ _40: 0, _65: 0, _55: null, _72: null }

我不知道我的代码有什么问题,我想在 getAllParameter 之外获取 data 的值,我该如何正确地做到这一点?

我需要获取getAllParameter的结果并自由使用它的原因是因为我在data中有token值,我需要在 axios 实例配置中使用 token

所以我的文件的完整代码应该是:

getAllParameter((data)=>{
return new Promise((resolve)=> resolve(showToken(data.Token)))
})

async function showToken(token){
var res = await token
console.log("res")
console.log(res)
return res
}

var isiToken = showToken()
console.log("isiToken")
console.log(isiToken)

const http = Axios.create ({
baseURL: Constants.APILink,
timeout: Constants.Timeout,
headers: {'Content-Type': 'application/json', 'Authorization': 'bearer '+isiToken}

export default http
});

最佳答案

我不确定您的 getAllParameter 定义,但该方法应该在最后调用您的回调。希望它能做到这一点,这里是做你想做的事的片段

(function() {
var data;
function getAllParam(callback) {
console.log("getAllParam");
callback("getAllParam");
}
getAllParam((data)=> {
this.data = data);
console.log(this.data);
});
})();

所以,我现在做的是

  1. 创建一个名为数据的变量;
  2. 将回调响应分配给我的数据变量。 (阅读箭头函数中的闭包和 this)
  3. 稍后使用。

但这是我的代码的局限性:当 getAllParam 是异步函数时,这不起作用。意思是如果回调没有按顺序调用。那么你必须使用 promise 。

编辑

app.js

function getAllParam(callback) {
console.log("getAllParam");
callback({Token: "getAllParam"});
}

var httpPromise = new Promise(resolve => {
getAllParam((data) => {
let token = data.Token;
console.log("Creating http from here using token");
let http = Axios.create({ bearer: token});

resolve(http);
})
});

export default httpPromise;

file_that_imports_app_js.js

import httpPromise from "./app.js";
async function init() {
let http = await httpPromise;

http.get("/", ...)
}

init();

关于javascript - 我如何将回调结果传递给变量并自由访问 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com