Javascript 函数不会等待其他函数完成执行
问题:Javascript 函数不会等待其他函数完成执行,javascript,node.js,amazon-s3,Javascript,Node.js,Amazon S3,问题: 我编写了一个函数来确定某个bucket是否存在。如果它存在,我会上传一些东西到我的bucket中,否则我会创建这个bucket,然后继续上传我的东西 但是,我的工作流程有一些问题。如果我的桶不存在。//上传我的东西比ensurebacktexists()创建我的bucket要快 来源: 我的代码: let s3BucketName = 'myBucket'; const s3 = new AWS.S3({ // Connection }); const uploadT
我编写了一个函数来确定某个bucket是否存在。如果它存在,我会上传一些东西到我的bucket中,否则我会创建这个bucket,然后继续上传我的东西 但是,我的工作流程有一些问题。如果我的桶不存在。
//上传我的东西
比ensurebacktexists()
创建我的bucket要快
来源:我的代码:
let s3BucketName = 'myBucket';
const s3 = new AWS.S3({
// Connection
});
const uploadToS3Bucket = () => {
ensureBucketExists();
// upload my stuff...
}
const ensureBucketExists = () => {
let bucketParams = {
Bucket: s3BucketName
};
s3.headBucket(bucketParams, function(headError) {
if (!headError) return;
s3.createBucket(bucketParams, function(createError) {
if (!createError) console.log(`Created new ${s3BucketName}.`)
});
});
};
uploadToS3Bucket();
- 我假设我必须以某种方式使用
和async
,但我不知道它们,并且似乎在正确实现它们时遇到了问题wait
- 您对
async
和wait
的假设是正确的。作为一次讲座,我可以向你推荐这一章关于校长的内容
为了实现您的目标,我增强了您的代码:
let s3BucketName = 'myBucket';
const s3 = new AWS.S3({
// Connection
});
const uploadToS3Bucket = async () => {
await ensureBucketExists();
// upload my stuff...
}
const ensureBucketExists = async () => {
let bucketParams = {
Bucket: s3BucketName
};
await s3.headBucket(bucketParams, function(headError) {
if (!headError) return;
s3.createBucket(bucketParams, function(createError) {
if (!createError) console.log(`Created new ${s3BucketName}.`)
});
});
};
uploadToS3Bucket();
不能以这种方式使用回调,然后返回值<代码>返回bucketExists总是在bucketExists=null!==数据已执行。我需要如何修复此问题?我怎样才能告诉我的代码等待执行某项任务?我认为你应该花一两个小时熟悉异步技术和概念,从长远来看,这将使生活变得更加轻松。@Robert,你能给我推荐一些东西吗?