我是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
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的代码,因为毕竟第一次回调value2会undefinied.
告诉我为解决该回调序列需要应用哪些技术或哪些技术?
您需要以异步方式处理此问题.你可以试试这个:
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;
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
基本上所有的回调都必须嵌套在一起
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |