gpt4 book ai didi

Node.js 使用多个回调的正确方法

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:30 27 4
gpt4 key购买 nike

我是 Node.js 的新手,很抱歉。

在我的代码中,我正在使用某些服务的 API。基本上就是很多回调。这些回调提供了我需要在另一个回调中使用的服务值。

如果是同步方式那么我会写如下:

var value1 = 10;
var value2 = 0;
var value3 = '';
var value4 = '';

api.method1((error, data) => {
if (error) {
// some code
}

value2 = data.value1FromApi / value1;
});

if (value2 > 0) {
api.method2(value2, value1, (error, response) => {
if (error) {
// some code
}

value3 = response.value2FromApi;
value4 = response.value3FromApi;
});

// Check status
for (var i = 0; i < 10; i++) {
if (value4 !== 'some status') {
api.method3(value3, (error, response) => {
value4 = response.value4FromApi;
});

// wait(1000);
}
else {
break;
}
}

if (value4 !== 'some status') {
api.method4(value3, (error, response) => {

});
}
else {
// similar code as above
}
}

我知道这是错误的代码,因为第一次回调后value2将是未定义

告诉我需要应用什么技术或哪些技巧来解决该回调序列?

最佳答案

您需要以异步方式处理此问题。你可以试试这个:

api.method1((error, data) => {
if (error) {
// some code
}

value2 = data.value1FromApi / value1;
if (value2 > 0) {
api.method2(value2, value1, (error, response) => {
if (error) {
// some code
}

value3 = response.value2FromApi;
value4 = response.value3FromApi;
// Check status
for (var i = 0; i < 10; i++) {
if (value4 !== 'some status') {
api.method3(value3, (error, response) => {
value4 = response.value4FromApi;
if (value4 !== 'some status') {
api.method4(value3, (error, response) => {

});
}
else {
// similar code as above
}
});
}
else {
break;
}
}

});
}
});

基本上所有回调都必须相互嵌套

关于Node.js 使用多个回调的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376640/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com