首页 > 解决方案 > blob.doesBlobExist 不返回值

问题描述

这可能是一个非常愚蠢的问题,但我需要问;我正在尝试使用 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 或 for 之外打印它说那个 blobexistis 是空的。

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

标签: node.jsazure-blob-storage

解决方案


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

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


推荐阅读