首页 > 解决方案 > 执行异步函数后执行函数

问题描述

我有三个功能,需要一个接一个地执行

$(document).ready(function(){
    // Async function
    getAllTask();
    // Need to call after above function completed its process
    loadTasks();
    initView();
    listenEvents();
});

async function getAllTask(){
    // For this ap.request alone I used await, Because of await keyword I make this function as async
    await AP.request(...);

}

我想在getAllTask()函数完成其过程后执行所有其他函数。但是函数getAllTask()是异步的。请帮我解决这个问题。

有人面临同样的问题吗?

标签: javascriptjquerypromiseasync-awaitjira-rest-api

解决方案


调用 getAllTask​​(); 时也要使用 await;并使函数异步,因此代码将等待函数完成

$(document).ready(async function(){
    // Async function
    await getAllTask();
    // Need to call after above function completed its process
    loadTasks();
    initView();
    listenEvents();
});

async function getAllTask(){
    // For this ap.request alone I used await, Because of await keyword I make this function as async
    await AP.request(...);

}

您也可以实现 Promise 对象 => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise 以使用 resolve() 来完成异步函数,这里是一个示例

 $(document).ready(async function(){
        // Async function
        await getAllTask().then((data)=>{
            //Here you will get resolve(data)
            console.log(data)
        }).catch((err)=>{
            console.log(err)
                //here you will get error given
        })
        // Need to call after above function completed its process
        loadTasks();
        initView();
        listenEvents();
    });

    async function getAllTask(){
        return new Promise((resolve,reject)=>{
        // For this ap.request alone I used await, Because of await keyword I make this function as async
            await AP.request(...).then((data)=>{
                //It will resolve data, same as return
                resolve(data)
            }
            .catch((err)=>{
                //It will return the error given
                reject(err)
            };
        }
    }

推荐阅读