有一些非常简化的伪ish代码可以理解我的代码的结构。
解决我的异步回调难题的简单方法是什么。
在requestOption中使用令牌时,令牌将为空。因此,由于缺少令牌,requestOption的以下用法将不会给出任何结果。
var token = ''
var auth1 = someData
var auth2 = someFunc(auth1)
var auth3 = someOtherData
var auth4 = someOtherFunc(auth3)
var finalAuth = someFinalData
var finalAuth2 = finalAuth.someFinalFunc(auth4, cb)
cb.onSuccess(result)
token = result.getToken()
var requestOption = {
someData: ...,
'authToken': token,
someMoreData: ...
}
req = request.post(requestOption)
解决方案很多,其中大多数都包含使用功能的扩展。
将身份验证模块化并在另一个文件中处理请求也许很有用。
但我想保持简单,不要依赖于这样的东西
var empty = ''
var data = 'xyz'
auth(data, {
onSuccess: function(res) {
doSomething(res)
}
})
function doSomething(var) {
// do something
}
到目前为止,我发现的内容如果不使我的代码过于复杂就无法解决。
最佳答案
如果您不想处理promise和回调,则将函数标记为异步然后等待结果,这是语法糖为您神奇地包装了promise。当处理一个类似post的异步函数时,有些将不得不等待响应。
https://javascript.info/async-await
关于javascript - 异步回调导致变量为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56369340/