Javascript 传递值时的顺序承诺

Javascript 传递值时的顺序承诺,javascript,node.js,request,promise,es6-promise,Javascript,Node.js,Request,Promise,Es6 Promise,我正在玩destiny API,我遇到了一点问题。如果我请求一个字符详细信息,它将返回一个对象,但值是ID,然后需要将其传递到另一个API调用“清单”,该API调用将返回该ID的对象 我使用“请求承诺”进行API调用,但这意味着我必须嵌套我不满意的调用 我需要保留第一个请求中的一些数据,然后再进行另一次调用以获取最后一段数据 例如: 我需要一种方法来延迟第二个请求,直到第一个请求返回,然后将返回的值传递给第二个请求 谢谢不用嵌套呼叫,您可以这样: request('destiny-charac

我正在玩destiny API,我遇到了一点问题。如果我请求一个字符详细信息,它将返回一个对象,但值是ID,然后需要将其传递到另一个API调用“清单”,该API调用将返回该ID的对象

我使用“请求承诺”进行API调用,但这意味着我必须嵌套我不满意的调用

我需要保留第一个请求中的一些数据,然后再进行另一次调用以获取最后一段数据

例如:

我需要一种方法来延迟第二个请求,直到第一个请求返回,然后将返回的值传递给第二个请求


谢谢

不用嵌套呼叫,您可以这样:

request('destiny-character-api')
.then(character => {
    return request(`destiny-manifest-api/${character.item}`);
})
.then(item => {
    return item;
});
如果需要将一些数据从第一个成功处理程序传递到第二个成功处理程序,则返回一个
Promise.all()
,并将第二个
请求
与要发送的任何数据一起传入一个数组。e、 g

request('destiny-character-api')
.then(character => {
    return Promise.all([
        request(`destiny-manifest-api/${character.item}`),
        character.className
    ]);
})
.then(([item, className]) => {
    item.name = className;
});

如果您不想嵌套调用,您可以返回请求承诺并以扁平方式继续

return request('destiny-character-api')
.then(character => {
    return request(`destiny-manifest-api/${character.item}`);
}).then(item => {
    return item;
});
这样代码将是扁平的。阅读有关承诺链的内容


我不知道你推迟第二个请求是什么意思。。。。在此代码中,第二个请求将在第一个请求完成后触发。

您好,感谢您的响应,我确实需要保留第一个请求中的一些数据。我应该在问题中明确指出。。。我会编辑now@abbott567哦,酷。我也更新了我的答案。太棒了!这就是我要找的!感谢嵌套在这种情况下没有什么错,它是一个完全有效的解决方案(除了外部回调中被遗忘的
return
return request('destiny-character-api')
.then(character => {
    return request(`destiny-manifest-api/${character.item}`);
}).then(item => {
    return item;
});