Javascript Async/await不使用AWS S3 Node.js SDK
我已经创建了一个非常简短/简单的示例,说明我在使用aws sdk包for Node.js的脚本中遇到的承诺问题 简而言之,脚本没有在等待关键字处等待。它在循环中循环,无需等待异步函数在继续之前成功完成 代码示例: main.js 单击某个按钮并触发testS3方法 testActions.js 调试器的输出: 我希望消息是交错的,如果您遵循逻辑流程,这是有意义的 它应该在准备设计1中,然后显示结果…,然后再进行2次 prepare design 1中的输出在bat上显示了三次,表明循环在继续之前没有等待函数Javascript Async/await不使用AWS S3 Node.js SDK,javascript,node.js,amazon-web-services,amazon-s3,aws-sdk,Javascript,Node.js,Amazon Web Services,Amazon S3,Aws Sdk,我已经创建了一个非常简短/简单的示例,说明我在使用aws sdk包for Node.js的脚本中遇到的承诺问题 简而言之,脚本没有在等待关键字处等待。它在循环中循环,无需等待异步函数在继续之前成功完成 代码示例: main.js 单击某个按钮并触发testS3方法 testActions.js 调试器的输出: 我希望消息是交错的,如果您遵循逻辑流程,这是有意义的 它应该在准备设计1中,然后显示结果…,然后再进行2次 prepare design 1中的输出在bat上显示了三次,表明循环在继续之前
我是否以某种方式设置了async/Wait错误?我尝试了多个不同的迭代,但似乎无法按预期的方式工作。显示的行为是正确的,因为forEach的处理程序也是一个异步函数:
async (x) => {
const result = await testFunction()
}
因此forEach循环将立即运行3个异步函数。这些函数中的每一个都将异步等待承诺链的其余部分
如果要同步执行,请使用普通for循环:
for(var i=0; i<3; i++){
const result = await testFunction()
}
显示的行为是正确的,因为forEach的处理程序也是一个异步函数:
async (x) => {
const result = await testFunction()
}
因此forEach循环将立即运行3个异步函数。这些函数中的每一个都将异步等待承诺链的其余部分
如果要同步执行,请使用普通for循环:
for(var i=0; i<3; i++){
const result = await testFunction()
}
这是对AVAVT答案的补充,因为我无法对其进行评论,您也可以这样做,这样您就不必手动输入迭代次数并打算使用迭代值
import { s3 } from '@/main.js'
export async function testS3 () {
const testParams = {
Bucket: AWS_BUCKET,
Key: `test_file.txt`,
Body: 'Testing stuff'
}
async function testFunction(layer) {
console.log('in prepare design 1')
const result = await s3.putObject(testParams).promise()
console.log(`the results: ${result}`)
}
for (const iterator of [1,2,3]) {
const result = await testFunction();
}
}
这是对AVAVT答案的补充,因为我无法对其进行评论,您也可以这样做,这样您就不必手动输入迭代次数并打算使用迭代值
import { s3 } from '@/main.js'
export async function testS3 () {
const testParams = {
Bucket: AWS_BUCKET,
Key: `test_file.txt`,
Body: 'Testing stuff'
}
async function testFunction(layer) {
console.log('in prepare design 1')
const result = await s3.putObject(testParams).promise()
console.log(`the results: ${result}`)
}
for (const iterator of [1,2,3]) {
const result = await testFunction();
}
}