如何嵌套javascript http请求调用?
我正在努力进行一个调用,在单击按钮时,将向http请求传递一个值。第一个请求的结果被解析出来,然后在第二个http调用中使用。我可以通过以下方式接到第一个工作电话:如何嵌套javascript http请求调用?,javascript,nativescript,nativescript-vue,Javascript,Nativescript,Nativescript Vue,我正在努力进行一个调用,在单击按钮时,将向http请求传递一个值。第一个请求的结果被解析出来,然后在第二个http调用中使用。我可以通过以下方式接到第一个工作电话: { import config from "../config.json"; const httpModule = require("tns-core-modules/http"); ... let value1 = makeApi1Call(rawValue); let value2 = makeA
{
import config from "../config.json";
const httpModule = require("tns-core-modules/http");
...
let value1 = makeApi1Call(rawValue);
let value2 = makeApi2Call(value1);
makeApi1Call(rawValue) {
let aValue = null;
httpModule.request({
url: url1+rawValue,
method: "GET"
}).then((response) => {
let status = response.statusCode;
if (status === 200) {
let content = JSON.parse(response.content);
aValue = content[0].aValue;
console.log("===>received aValue : " + aValue);
return aValue;
} else if (status === 404) {
console.log("===> returned [404] ... returning null " );
return aValue;
}
}, (e) => {
console.log("===> Error occurred " + JSON.stringify(e));
return aValue;
});
}
自然地,由于http响应在对它的调用之后完成,因此返回的值为null。我可以在控制台日志中看到它,但是现在使用它已经太晚了。我尝试添加一个回调方法来进行第二次http调用,但我没有掌握它。我不确定是否应该在status==200块中进行第二次api调用,或者是否有更好的javascript,我仍在学习这种方法
let value1;
let value2;
makeApi1Call(rawValue) {
let aValue = null;
httpModule.request({
url: url1+rawValue,
method: "GET"
})
.then((response) => {
value1 = response.someData
})
.then(() => {
value2 = makeAPIcall2(value1)
}
我更改了您的代码,以便至少在第一次调用完成之前,您的第二次调用不会启动。如果makeApi1Call返回了httpModule.request返回的承诺,那么您可以简单地使用承诺链,您可以详细说明吗?我真的在为承诺、回电而挣扎。我明白了这个概念,但我似乎无法将其组合在一起以挽救我的生命。请参见如何使用httpModule.request{…}。然后响应=>{这是一个承诺链…返回函数返回的值只需在第一个函数中进行后续XHR调用,然后,在解析数据之后,返回之前,我想了解所有关于承诺的信息,您可以使用它。一旦您了解承诺,您就可以轻松地处理异步请求。谢谢,我能够嵌套我的HTTP ca我将通过@Manoj提供的链接更深入地挖掘承诺。