我在这里已读过几篇有关此问题的文章(回调),但我仍然不太了解如何解决我的问题。所以我希望这里有人可以帮助我,我会做得更好。
简单地说,我希望将从第一个请求中获得的ID用于第二个请求。
我是JavaScript和NodeJS的新手。
function idRequest(name) {
var options = {
...
};
function callback(error, response, body) {
if (response.statusCode == 200 && !error) {
const info = JSON.parse(body);
//console.log(info.accountId);
return info.accountId;
}
}
request(options, callback);
}
function requestById(accountId) {
var options = {
...
};
function callback(error, response, body) {
if (response.statusCode == 200 && !error) {
const info = JSON.parse(body);
console.log(info);
}
}
request(options, callback);
}
var id = idRequest('..');
requestById(id);
答案 0 :(得分:0)
尝试从第一个函数返回一个promise,并在其内部解决回调,因此一旦解决,便可以使用它来触发第二个函数
function idRequest(name) {
var options = {
...
};
function callback(error, response, body) {
if (response.statusCode == 200 && !error) {
const info = JSON.parse(body);
//console.log(info.accountId);
return info.accountId;
}
}
return new Promise(function(resolve, reject) {
resolve(request(options, callback))
})
}
function requestById(accountId) {
var options = {
...
};
function callback(error, response, body) {
if (response.statusCode == 200 && !error) {
const info = JSON.parse(body);
console.log(info);
}
}
request(options, callback);
}
var id = idRequest('..').then(function(data) {
requestById(data);
});
答案 1 :(得分:0)
因为回调是异步调用,所以当您调用 override fun onFling(
e1: MotionEvent?,
e2: MotionEvent?,
velocityX: Float,
velocityY: Float
): Boolean { ...
时,var id
将是undefined
因此您可以使用由@brk回答的promise方法,也可以直接从第一个回调调用requestById(id);
函数。