javascript对象总是空的

时间:2017-06-25 17:34:37

标签: javascript

在下面的函数中,existingFiles对象返回空。

如果我在'service.files.list'的末尾打印它,那么我会看到预期的结果。

我错过了什么?

肯定有较旧的帖子有相同/类似的问题但我在搜索时可能会错过正确的关键字。

function searchFiles(auth, fileName) {
    "use strict";

    let service = google.drive('v3');
    let existingFiles = new Object();

    service.files.list({
        auth: auth,
        q: "name contains '"+fileName+"' and trashed = false",
        spaces: 'drive',
        pageSize: 100,
        fields: "nextPageToken, files(id, name)"
    }, function(err, response) {
        if (err) {
            doNotify(hipchatChannelID, hipchatFromUser, 'The API returned an error: '+err,'red');
            return;
        }
        let files = response.files;
        if (files.length == 0) {
            //console.log('No files found.');
        } else {
            for (let i = 0; i < files.length; i++) {
                let file = files[i];
                existingFiles = { 'fileName':file.name, 'fileID':file.id };
            }
        }
    });

    //console.log(JSON.stringify(existingFiles));
    return existingFiles;
}

2 个答案:

答案 0 :(得分:2)

对函数service.files.list的调用是异步的,这是返回空对象的原因

尝试在for循环后返回

答案 1 :(得分:0)

因为existingFiles仅在(files.lenght!= 0)时获取值,实际上如果files.lenght == 0 existingFiles将为null。