我在回送项目中工作。
在这里,我在模型中制作扩展的api。
异步功能很多。
我想在调用所有异步函数之后调用cb函数。
有人有想法吗?
答案 0 :(得分:1)
使用
async.parallel
来并行运行函数并返回最终结果。
下面的示例可以帮助您:
var async = require('async')
function functionName(parameter, cb) {
async.parallel([
function(callback) {
setTimeout(function() {
callback(null, 'one');
}, 200);
},
function(callback) {
setTimeout(function() {
callback(null, 'two');
}, 100);
}
],
// optional callback
function(err, results) {
// the results array will equal ['one','two'] even though
// the second function had a shorter timeout.
if (error) {
logger.error("ERROR FIRST SUBSCRIPTION > ", error);
cb(error);
return;
}
cb(null, {
success: true
});
});
};
参考链接:async
答案 1 :(得分:0)
Loopback 3支持Promise回调。只要兑现承诺
例如:
User.findUserByName = function(name, req, res, cb) {
return User.find({filter: {where: {name: name}}).then(function(result){
//make antoher calls
return result
})
}
答案 2 :(得分:-1)
异步/等待的基础知识可以在这里找到: MDN async / await
因此,您应该执行以下操作:
function fct1(a) {
return new Promise((resolve, reject) => {
// do something
setTimeout(() => {
resolve(a + 1);
}, 500);
});
}
function fct2(a) {
return new Promise((resolve, reject) => {
// do something else
setTimeout(() => {
resolve(a + 1);
}, 500);
})
}
async function mainFct(cb) {
const a = 0;
const b = await fct1(a);
const c = await fct2(b); // won't be executed until fct1 has finished
cb(c); // won't be executed until fct2 has finished
}
mainFct((result) => {
console.log(result); // prints 2
});
希望对您有帮助...