Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript “固定”;变量在赋值之前使用";错误_Typescript - Fatal编程技术网

Typescript “固定”;变量在赋值之前使用";错误

Typescript “固定”;变量在赋值之前使用";错误,typescript,Typescript,从我下面的代码片段中 从“aws sdk”导入{STS} 常数sts=新sts({ 地区:'us-east-1' }); 让accessKeyId:string 让secretAccessKey:字符串 sts.assumeRole(参数、函数(错误、数据){ 如果(错误){ 日志(err,err.stack); }否则{ accessKeyId=data.Credentials?.accessKeyId | |“”; secretAccessKey=data.Credentials?.secr

从我下面的代码片段中

从“aws sdk”导入{STS}
常数sts=新sts({
地区:'us-east-1'
});
让accessKeyId:string
让secretAccessKey:字符串
sts.assumeRole(参数、函数(错误、数据){
如果(错误){
日志(err,err.stack);
}否则{
accessKeyId=data.Credentials?.accessKeyId | |“”;
secretAccessKey=data.Credentials?.secretAccessKey | |“”;
}
}); 
console.log(accessKeyId);
console.log(secretAccessKey);

VS code表示“变量‘accessKeyId’在分配前已被使用。”我需要在
assumeRole()
sdk调用之外访问这两个变量……如何确保当时已设置变量?

accessKeyId
在分配前已被使用,因为对于typescript,不能保证在执行回调之前运行日志。在不知道assumeRole做什么的情况下,它接受回调这一事实意味着它可能是异步的,因此几乎肯定会有一些延迟


因此,如果您需要使用
accessKeyId
,您应该在回调中设置它之后,在它被分配之后再使用它。

accessKeyId
在分配之前被使用,因为对于typescript,不保证您的日志在执行回调之前运行。在不知道assumeRole做什么的情况下,它接受回调这一事实意味着它可能是异步的,因此几乎肯定会有一些延迟


因此,如果您需要使用
accessKeyId
,则在回调中设置后,应在分配后立即使用。

在返回块中工作,以便它仅在返回数据后进行处理

{
if (err) {
    console.log(err, err.stack);
} else {

    accessKeyId = data.Credentials?.AccessKeyId || '';
    secretAccessKey = data.Credentials?.SecretAccessKey || '';
//work here
    }
}); 

建议2放入一个函数中,该函数在使用返回块中的变量之前等待async完成,这样它只会在返回数据后进行处理

{
if (err) {
    console.log(err, err.stack);
} else {

    accessKeyId = data.Credentials?.AccessKeyId || '';
    secretAccessKey = data.Credentials?.SecretAccessKey || '';
//work here
    }
}); 

建议2放入一个函数,该函数在使用变量之前等待async完成,因此我只需要包装
assumeRole()
async
函数内部调用?不,在调用信息之前,您需要先返回数据,否则您将始终在需要从内部调用的位置收到一个错误,即nil或undefinedJust update。assumeRole,从那里调用一个需要更新的函数,因此我只需要包装
assumeRole()
async
函数内部调用?不,在调用信息之前,您需要先返回数据,否则,在需要从内部调用的位置,您将始终收到一个错误,即nil或undefinedJust update。假定从那里调用需要更新的函数