【问题标题】:blob.doesBlobExist does not return valuesblob.doesBlobExist 不返回值
【发布时间】:2021-09-24 06:47:46
【问题描述】:

这可能是一个非常愚蠢的问题,但我需要问一下; 我正在尝试使用 blobservice 中的 dosBlobExist 方法检查 blob 是否存在。

我的代码如下所示:

var blobexists;
var containerNamesArray[.....,....,...,..]
for (var i = 0; i < containerNamesArray.length; i++) {
    
    
    blobService.doesBlobExist(containerNamesArray[i], "path/something.json", function (error, result) {
        if (!error) {
            if (result.exists) {
                blobexists= result.exists
                console.log(blobexists) //this prints values

                return(blobexists)
                
            } else {

                blobexists= result.exists
                return(blobexists)
            }
            
        }
    });

console.log(blobexists) //this returns null
}


现在,如果我在 if(!error) 中执行 console.log,我会得到结果的值,如果我将 result.exists 分配给 blobexists,返回值,然后尝试在 for 或外部打印因为它说 blobexistsis 为空。

为什么 return 不让我将值返回给全局变量?

【问题讨论】:

    标签: node.js azure-blob-storage


    【解决方案1】:

    为什么 return 不让我将值返回给全局变量?

    这是因为您的 blobService.doesBlobExist 方法是异步执行的。因此发送请求以检查 blob 的存在并等待响应,但是您的 console.log(blobexists) 在调用 doesBlobExist 方法后几乎立即执行。

    【讨论】:

    • 嗨 Gaurav,谢谢你的回答,我应该在异步函数的某个地方使用 await 吗?你有什么建议吗?
    • 我实际上建议使用 BlueBird Promise 库并将整个循环放在一个承诺中。
    猜你喜欢
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2016-02-22
    • 2019-07-20
    • 2011-09-05
    • 2019-10-22
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多