嵌套在函数中的异步函数
async function nested inside a function
我正在使用一个框架,我在其中找到了这样的代码:
块1
fun_1(params, callback) {
fun_2(params, callback) {
...
fun_n(params, callback) {
asyncFunction().then(callback).catch(callback)
}
因为 asyncFunction
来自已弃用的 npm package
我会借此机会重构它。
我想换成这样:
块2
fun_1(params).then(callback)
其中 fun_1
将是:
fun_1(params) {
fun_2(params) {
return asyncFunc() ???
}
}
第二个模式是否正确且优于第一个模式?
看来是对的。但是,所有函数在调用内部函数时都需要 return 承诺。例如:
fun_1(params) {
fun_2(params) {
return asyncFunc();
}
return fun_2(params);
}
fun_1(params).then(callback);
你的问题信息不多,但我会尽力回答。
为了 fun_1
能够与 .then
链接,它需要 return 一个承诺:
function fun_1() {
return new Promise((resolve, reject) => {
// Do some tasks and resolve when complete
resolve(/* some data */)
}
}
或者,通过使用 async
关键字,它只是 Promise 的语法糖:
async function fun_1() {
await some_async_task()
return; // does the same as resolve would in Promise
}
为了重构代码,您将不得不移动承诺中的异步内容和回调。
如果您想澄清问题中的某些内容以获得更好的答案,请告诉我。
我正在使用一个框架,我在其中找到了这样的代码:
块1
fun_1(params, callback) {
fun_2(params, callback) {
...
fun_n(params, callback) {
asyncFunction().then(callback).catch(callback)
}
因为 asyncFunction
来自已弃用的 npm package
我会借此机会重构它。
我想换成这样:
块2
fun_1(params).then(callback)
其中 fun_1
将是:
fun_1(params) {
fun_2(params) {
return asyncFunc() ???
}
}
第二个模式是否正确且优于第一个模式?
看来是对的。但是,所有函数在调用内部函数时都需要 return 承诺。例如:
fun_1(params) {
fun_2(params) {
return asyncFunc();
}
return fun_2(params);
}
fun_1(params).then(callback);
你的问题信息不多,但我会尽力回答。
为了 fun_1
能够与 .then
链接,它需要 return 一个承诺:
function fun_1() {
return new Promise((resolve, reject) => {
// Do some tasks and resolve when complete
resolve(/* some data */)
}
}
或者,通过使用 async
关键字,它只是 Promise 的语法糖:
async function fun_1() {
await some_async_task()
return; // does the same as resolve would in Promise
}
为了重构代码,您将不得不移动承诺中的异步内容和回调。 如果您想澄清问题中的某些内容以获得更好的答案,请告诉我。