Exexute promise 并使用 result 进行更多异步调用

Exexute promise and use result to do more async calls

提问人:Barry Dogger 提问时间:3/31/2023 更新时间:3/31/2023 访问量:17

问:

我想做什么:

  1. 调用 Jira api 以搜索事务。(queryAllIssues)
  2. 我解析响应并将问题键添加到数组中。 目前为止,一切都好。

但是 3. 我想遍历数组中的所有问题并执行另一个 api 调用:listTransitions。 我无法让它工作。 谁能帮我?

我真正想要的是:

  • 定义一个执行第一个 API 调用的函数。
  • 在第二个函数中,我将从第一个函数(所有问题的列表)中获取结果(无法使其工作)
  • 在 3 个功能中工作以进一步处理。

请参阅下面的代码

const queryAllIssues = "project = Bla AND resolutiondate >= startOfWeek(-1) AND status = Closed AND issuetype = Story ORDER BY resolved DESC"
const listWithIssues = [];

function fetchIssue(){

const promise = new Promise(resolve =>
            resolve(jira.searchJira(queryAllIssues)));
let result;

promise
    .then((response) => {
    result = JSON.stringify(response)
    let js = JSON.parse(result);
    const listOfIssues = js["issues"];

    Object.entries(listOfIssues).forEach((entry) => {
        //data is in second place of array so get [1]
        let parsedIssue = JSON.parse(JSON.stringify(entry[1]));
        console.log("Issue key :" + parsedIssue["key"]);
        listWithIssues.push(parsedIssue["key"]);
        //get fields
        });
    },)
    .then(() => {
        console.log("data  : " + listWithIssues.length);
        listWithIssues.forEach((issue) => {
        console.log(" search string  = : " +queryTransitions+issue);

        let transPromise = new Promise(resolve =>
            resolve(jira.listTransitions(issue)));

    transPromise
        .then((newresoonse) => {
        let result2 = JSON.stringify(newresoonse)
        let js = JSON.parse(result2);
    },)
        });
    });
}
node.js 异步 async-await 回调

评论

0赞 trincot 4/1/2023
您使用的是哪种 Jira API?您是否参考了 和 等方法的文档?这些方法会返回 promise 吗?searchJiralistTransitions
0赞 Barry Dogger 4/1/2023
jira-client:npmjs.com/package/jira-client API:jira-node.github.io/class/src/jira.js~JiraApi.html
0赞 trincot 4/1/2023
我无法测试代码,因为我没有 JIRA,所以我不会回答。但是你的代码确实有很多问题,这些问题有简单的解决方案。但是,如果他们愿意,我会把它留给可以使用这个特定 API 的其他人来回答您的问题。

答: 暂无答案