【问题标题】:Execute function after async function is executed执行异步函数后执行函数
【发布时间】:2020-03-27 21:52:58
【问题描述】:

我有三个函数,需要一个接一个地执行

$(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() 是异步的。请帮我解决这个问题。

有人遇到同样的问题吗?

【问题讨论】:

    标签: javascript jquery promise async-await jira-rest-api


    【解决方案1】:

    调用 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)
                };
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多