在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 異步匿名函數(shù)怎么return

異步匿名函數(shù)怎么return

問(wèn)題描述

使用vue axios庫(kù)進(jìn)行http請(qǐng)求
在這個(gè)請(qǐng)求攔截器里 axios.interceptors.request.use 去進(jìn)行跟ios通信獲取一些手機(jī)設(shè)備信息參數(shù)最后再去發(fā)起請(qǐng)求 return config;
但是跟ios通信是異步的 return config的時(shí)候還沒(méi)能獲取到ios的響應(yīng)

相關(guān)代碼

axios.interceptors.request.use(config => {
    // 調(diào)用ios方法 填充公共參數(shù)
    window.__nativeFn("js_getAllDeviceInfo", {
        // ios的響應(yīng)結(jié)果
        response: r => {
            config.data = Object.assign(config.data, r.data)
        }
    })
    return config

}, error => {
    return Promise.reject(error);
});

嘗試1、采用定時(shí)器來(lái)看ios是否響應(yīng)(未實(shí)現(xiàn)需求 在定時(shí)器里也無(wú)法return config,再定時(shí)器里調(diào)用回調(diào)函數(shù) 也不知道怎么return給他axios.interceptors.request.use)

axios.interceptors.request.use(config => {
    // 調(diào)用ios方法 填充公共參數(shù)
    window.a = false
    window.__nativeFn("js_getAllDeviceInfo", {
        // ios的響應(yīng)結(jié)果
        response: r => {
            config.data = Object.assign(config.data, r.data)
            window.a = true
        }
    })
    var i = 0
    let SI = setInterval(() => {
        i++
        // 如果5秒之內(nèi)ios端還沒(méi)有響應(yīng) 清除定時(shí)器
        if(5000 <= i) {
            clearInterval(SI)
        }
        if(window.a) {
            clearInterval(SI)
            return config
        }
    })

}, error => {
    return Promise.reject(error);
});

嘗試2 采用@yuanxiaowa 的方法 發(fā)起了2個(gè)api請(qǐng)求 第二個(gè)api請(qǐng)求沒(méi)發(fā)出 打印的config 始終是第一個(gè)請(qǐng)求的相關(guān)信息

return new Promise(resolve => {
   // 調(diào)用ios方法 填充公共參數(shù)
   window.__nativeFn("js_getAllDeviceInfo", {
   // ios的響應(yīng)結(jié)果
   response: r => {
      config.data = Object.assign(config.data, r.data)
      console.log(config)
      resolve(config)
     }
   })
})
回答
編輯回答
久礙你
axios.interceptors.request.use(config => {
    return new Promise(resolve => {
        // 調(diào)用ios方法 填充公共參數(shù)
        window.__nativeFn("js_getAllDeviceInfo", {
            // ios的響應(yīng)結(jié)果
            response: r => {
                config.data = Object.assign(config.data, r.data)
                resolve(config)
            }
        })
    })

}, error => {
    return Promise.reject(error);
});
2018年8月14日 12:52