javascript - 环回: Making synchronous call to loopback api

标签 javascript node.js loopbackjs

我想对我使用环回设计的 API 之一进行同步调用。这是我的代码:

router.get('/friends', function(req, res, Array) {
    var friendsList = []
    for(var counter=0;counter<length;counter++){
                  Model.findById(Array[counter].Id,function(err, record) {
                    if(record){
                        friendsList.push(record);
                    }
                  });
                }
                res.status(200).json(friendsList);
});

现在我在数组之前收到响应,friendList 已完全填充。我想让这个同步并得到正确的响应。我该怎么办?

谢谢!

最佳答案

一个简单的方法是

  • 将变量设置为长度
  • 每次调用回调时,将此变量减少 1
  • 当它达到零时,您已经处理了最终回调
  • 在回调中,调用 res.status...

像这样:

router.get('/friends', function(req, res, array) {
    var friendsList = [];
    var remaining = length;
    for(var counter=0;counter<length;counter++){
        Model.findById(array[counter].Id, function(err, record) {
            if (record){
                friendsList.push(record);
            }
            remaining -= 1;
            if (remaining == 0) {
                res.status(200).json(friendsList);
            }
        });
    }
});

为了完整性......因为您使用的是nodejs ...使用( native )Promise 和 arrow function 语法

router.get('/friends', (req, res, array) =>
    Promise.all(array.map(item => 
        new Promise((resolve, reject) => 
            Model.findById(item.Id, (err, record) => 
                resolve(record || undefined)
            )
        )
    ))
    .then(friendsList => 
        res.status(200).json(friendsList.filter(item => 
            item !== undefined
        ))
    )
);

关于javascript - 环回: Making synchronous call to loopback api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653080/

相关文章:

javascript - 变换svg中的图像而不变换坐标系

javascript - setInterval() 函数在控制台上运行,但在一次 api 命中后,数据在浏览器上没有更新

javascript - 第一次异常后继续测试 | Chai | Mocha

ruby-on-rails - 相对于 Rails AES 密码的环回密码加密

javascript - 如何同时对多个输入乘以值求和

javascript - Cookie 未随 Web 应用 manifest.json 请求一起发送

javascript - 在 ReactJS 中定义函数时,仅在括号内使用括号和花括号有什么区别?

mysql - 无法从 Node js插入mysql

postgresql - 更新 LoopbackJS 中的隐藏属性

javascript - 如何使用 Restangular 调用自定义查询 URL?