如何实现异步/等待

How to implement async / await

我想知道如何return response.json () 中的新对象数组在失眠时可见。

我从 API 接收各种信息,目标是 return 我的前端只是我创建的 response.json () 中的一个对象数组。

所以我想将它们存储在一个变量中。

这是代码:

    var T = new Twit({
        consumer_key: process.env.CONSUMER_K,
        consumer_secret: process.env.CONSUMER_S,
        access_token: process.env.ACCESS_T,
        access_token_secret: process.env.ACCESS_T_S,
        timeout_ms: 60 * 1000,
        strictSSL: true,
})

app.get('/teste', (request, response) => {

let obj = {};
let obj2 = {};

    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {

        data.map(item => {
            obj.name = item.user.name;
            obj.texto = item.text;
            obj.profileImage = item.user.profile_image_url;
        });
    });
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
    
        data.map(item => {
            obj2.name2 = item.user.name;
            obj2.texto2 = item.text;
            obj2.profileImage2 = item.user.profile_image_url;
        });
    
    });   

    setTimeout(() => {
      return response.json([obj, obj2]);
    }, 1000);
    
});

在负责我的人的帮助下,能够return更干净json,但现在我想知道如何实现aync / await来代替“setTimeout” ()”,因为函数在使用“setTimeout()”的“dalay”时只return一个数组。

谢谢!

问题是您的数组变量在路由函数之外,使其成为全局变量,这意味着即使您创建新的 GET 请求,也会存储以前的数组值。因此,您可以在路由函数中添加数组变量,也可以在发出 GET 请求后立即清空数组。

一个例子:

  var T = new Twit({
            consumer_key: process.env.CONSUMER_K,
            consumer_secret: process.env.CONSUMER_S,
            access_token: process.env.ACCESS_T,
            access_token_secret: process.env.ACCESS_T_S,
            timeout_ms: 60 * 1000,
            strictSSL: true,
    })
    
    app.get('/teste', (request, response) => {
        var obj = {};
        T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {
    
            data.map(item => {
                obj.name = item.user.name, 
                obj.texto = item.text 
                obj.profileImage = item.user.profile_image_url
            });
    
        });
        T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
        
            data.map(item => {
                obj.name2 = item.user.name, 
                obj.texto2 = item.text 
                obj.profileImage2 = item.user.profile_image_url
            });
        
        });    
    
        return response.json([obj]);
    });

不必每次都推送一个新对象,只需创建并清空对象并在同一个对象上赋值。

var T = new Twit({
        consumer_key: process.env.CONSUMER_K,
        consumer_secret: process.env.CONSUMER_S,
        access_token: process.env.ACCESS_T,
        access_token_secret: process.env.ACCESS_T_S,
        timeout_ms: 60 * 1000,
        strictSSL: true,
})

app.get('/teste', (request, response) => {
    let arr0 = []
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=******=1', (err, data, response) => {

        data.map(item => {
            const temp = {
                profileImage: item.user.profile_image_url,
                name: item.user.name,
                texto: item.text,
            };
            arr0.push(temp);
        });
    });
    T.get('https://******.com/1.1/statuses/user_timeline.json?screen_name=u*******=1', (err, data, response) => {
    
        data.map(item => {
            const temp = {
                profileImage2: item.user.profile_image_url,
                name2: item.user.name,
                texto2: item.text,
            };
            arr0.push(temp);
        });    
    });
    
    return response.json([temp]);
});