Javascript 异步回调导致变量为空
有一些非常简化的伪ish代码可以理解我代码的结构 解决异步回调难题的简单方法是什么。Javascript 异步回调导致变量为空,javascript,node.js,Javascript,Node.js,有一些非常简化的伪ish代码可以理解我代码的结构 解决异步回调难题的简单方法是什么。 在requestOption中使用令牌时,该令牌将为空。因此,由于缺少令牌,下面使用requestOption不会给出任何结果 var token = '' var auth1 = someData var auth2 = someFunc(auth1) var auth3 = someOtherData var auth4 = someOtherFunc(auth3) var finalAuth = some
在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
}
到目前为止,我的发现无法帮助我避免代码的过度复杂化。如果您不想处理承诺和回调,请将函数标记为异步,然后等待结果,是语法糖神奇地为您包装了承诺。在处理post之类的异步函数时,有些函数必须等待响应
如果您不想处理承诺和回调,那么将函数标记为异步,然后等待结果,是语法糖神奇地为您包装了承诺。在处理post之类的异步函数时,有些函数必须等待响应
您应该在成功回调中包含请求逻辑。在您的情况下,带有请求和请求选项的代码在设置令牌的值之前执行,因为auth函数是异步的,服务器需要一些时间来响应。您应该在成功回调中包含请求逻辑。在您的情况下,带有请求和请求选项的代码会在设置令牌的值之前执行,因为auth函数是异步的,服务器需要一些时间来响应。基本JavaScript将为您提供处理异步行为的三个主要选项
函数回调(){
log('do this');
setTimeout(()=>console.log('later do this'),2000);
}
回调()代码>基本JavaScript将为您提供处理异步行为的三个主要选项
回调函数(您现在所做的)
函数回调(){
log('do this');
setTimeout(()=>console.log('later do this'),2000);
}
回调()代码>很难看出你在问什么。该示例与第一个示例完全不同。在任何情况下,如果requestOption
依赖于someFinalFunc
的结果,则必须将其放入回调中。(或者使用async/await)。很难看出您在问什么。该示例与第一个示例完全不同。在任何情况下,如果requestOption
依赖于someFinalFunc
的结果,则必须将其放入回调中。(或使用异步/等待)。