有一些非常简化的伪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/

10-16 21:04