我正在尝试使异步调用在下面(它们是异步的,因为外部API,而不是我的设计)按顺序运行,现在我设法让foo的调用函数来等待它,但是我遇到了麻烦等待foo2,因为我在异步行上收到以下错误
参数列表后的JS错误:语法错误:缺少
我想念什么?
ps:还有一种比设置全局变量并从外部访问它更好的方式从回调中“返回”值吗?
foo2(par2) {
return new Promise((resolve, reject) => {
par2.asyncfun(
null, this.callback.bind(this, par2));
});
}
ls = eval(input("Input a list:"))
lss = list(set(ls))
print(lss)
提前谢谢
答案 0 :(得分:1)
我认为您只是想在一个承诺中做太多事情:
async function(nick) {
let res1 = await new Promise((resolve, reject) => {
async_foo(par, [], (c, res) => {
try {
resolve(async_foo_finish(res));
} catch (e) {
reject(e);
}
});
});
return new Promise((resolve, reject) => {
res1.asyncfunc(null, (obj, res) => {
try {
resolve(obj.asyncfun_finish(res));
} catch (e) {
reject(e);
}
});
});
}
foo('something').then(output => {
log('output');
}).catch(e => {
logError(e);
});
由于您没有显示真实的功能,因此很难给出很好的建议。
Promises / async-await的主要目的之一是避免复杂的回调嵌套。通常,应该将功能链分解为单独的Promises,然后await
一个接一个地连接。