使用Promises发出连续的got.js请求

时间:2019-02-01 19:51:50

标签: javascript node.js promise

我想使用got库发出HTTP请求;机智地正确地运用了承诺。

我已经尝试在代码中使用Promises,但是它们从未按预期工作。

考虑以下伪代码:

function getToken() {
    var response = new Request('https://my-api/get-token')
}

// First, I need to get a token
my_token = getToken();

// Now I can perform actions with it
var folderID = createFolder(my_token, '/root')
renameFolder(my_token, folderID, 'foo_bar')
deleteFolder(my_token, folderID)

如您所见,所有都需要同步完成。

  1. 首先,我需要从网站上获取令牌
  2. 然后,我创建的东西使用令牌
  3. 然后,我在工作的创建的事情

这可能不能被使用如记载于得到库承诺完成: https://www.npmjs.com/package/got#usage

我不知道该怎么办。他们甚至没有提供任何示例。

请帮我吗?

1 个答案:

答案 0 :(得分:4)

您永远不应该做同步请求他们阻塞线程,这将是一个服务器,并同步请求已经过时了很久的客户端太灾难性的。

我认为您已经学习了一些有关异步代码的知识,但与此同时,您是否看过文档?第一个片段显示了使用asyc/await进行异步处理是多么简单:

const got = require('got');

(async () => {
    try {
        const response = await got('https://sindresorhus.com');
        const token = response.body;
        // ... do stuff with token
        const nextResponse = await got('http://sindresorhus.com', {
          headers: {
            Authorization: `Bearer ${token}`,
          },
        })
    } catch (error) {
        console.error(error.response.body);
    }
})();