javascript - 再次关于 javascript 中的 async/await

标签 javascript node.js

我的函数现在看起来像这样:

var GetImages = async() => {
var images_array = [];
await request ({
    url: `https://api.tumblr.com/v2/blog/nameblog/posts?api_key=${process.env.TUMBLR_KEY}&type=photo`,
    json: true
}, (error, response, body) => {
    if(error){
        console.log('Unable to connect');
    }else if(body.meta.status === "ZERO_RESULTS"){
        console.log('Uable to find that address.');
    }else if(body.meta.status === 200){
        body.response.posts.forEach(function(obj) {
            obj.photos.forEach(function(photo) {
                if(photo.original_size.width>photo.original_size.height){
                    images_array.push(photo.original_size.url);
                    console.log("dawdaw");
                } 
            });
        });
        //callback(images_array);
    }
});
 return images_array;
}

我不知道在用值填充数组后如何返回它。使用回调它工作正常,但我想以正确的方式使用 async/await 方法来做到这一点。谢谢您的帮助。

最佳答案

创建方法来返回请求的 promise ,并将该方法与await一起使用

requestPromise = () => {

    return new Promise(function(resolve, reject) {
        request({
            url: `https://api.tumblr.com/v2/blog/nameblog/posts?api_key=${process.env.TUMBLR_KEY}&type=photo`,
            json: true
        }, (error, response, body) => {
            if (error) {
                console.log('Unable to connect');
                reject();
            } else if (body.meta.status === "ZERO_RESULTS") {
                console.log('Uable to find that address.');
                reject();
            } else if (body.meta.status === 200) {
                body.response.posts.forEach(function(obj) {
                    obj.photos.forEach(function(photo) {
                        if (photo.original_size.width > photo.original_size.height) {
                            images_array.push(photo.original_size.url);
                            console.log("dawdaw");
                        }
                    });
                });
                resolve(images_array)
            }
        });
    });

}
<小时/>
var GetImages = async() => {
    try
    {
         images = await requestPromise();
         return images;
    }
    catch(e){return [];}
}

关于javascript - 再次关于 javascript 中的 async/await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45654409/

相关文章:

javascript - 数据表列过滤器未显示

javascript - 任何 JQuery alert() 替代 JavaScript 的 native ?

javascript - MSIE 11 上的 ActiveX 动态创建已损坏?

json - 如何从 node_modules 文件夹添加 package.json 依赖项?

node.js - 使用nodejs加密PDF

node.js - 有条件地从 package.json 中排除安装 Node 依赖项

javascript - 在此模块外的 Node.js 模块中模拟构造函数(或其他函数)

javascript - 当所有元素都悬停时,CSS 在悬停时更改单独的元素

javascript - 通过示例了解 javascript 的异步行为

node.js - 带有 ObjectID 引用的 RESTful Mongoose