第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無需使用 Axios 嵌套在 Node.js 中同步進(jìn)行多個(gè) Web api 調(diào)用

無需使用 Axios 嵌套在 Node.js 中同步進(jìn)行多個(gè) Web api 調(diào)用

MMTTMM 2023-04-27 16:28:19
有什么辦法可以讓下面的代碼同步運(yùn)行,我可以獲取所有 productLine id,然后遍歷并刪除所有這些,然后一旦所有這些都完成,獲取所有 productId,然后循環(huán)通過并刪除所有這些?我真的很想能夠批量刪除每組項(xiàng)目,但是下一節(jié)要等到第一節(jié)完成后才能運(yùn)行,否則會(huì)出現(xiàn)引用完整性問題。// Delete Product Linesaxios.get('https://myapi.com/ProductLine?select=id')    .then(function (response) {        const ids = response.data.value        ids.forEach(id => {            axios.delete('https://myapi.com/ProductLine/' + id)        })    })    .catch(function (error) {    })// Delete Products (I want to ensure this runs after the above code)axios.get('https://myapi.com/Product?select=id')    .then(function (response) {        const ids = response.data.value        ids.forEach(id => {            axios.delete('https://myapi.com/Product/' + id)        })    })    .catch(function (error) {    })
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

您的代碼中有很多重復(fù)項(xiàng)。為了減少代碼重復(fù),您可以創(chuàng)建一個(gè)可以使用適當(dāng)參數(shù)調(diào)用的輔助函數(shù),該輔助函數(shù)將包含刪除產(chǎn)品線和產(chǎn)品的代碼。


async function deleteHelper(getURL, deleteURL) {

   const response = await axios.get(getURL);

   const ids = response.data.value;


   return Promise.all(ids.map(id => (

      axios.delete(deleteURL + id)

   )));

}

有了這個(gè)輔助函數(shù),現(xiàn)在您的代碼將得到簡化并且沒有代碼重復(fù)。


現(xiàn)在要達(dá)到預(yù)期的結(jié)果,您可以使用以下方法之一:


不要使用兩個(gè)單獨(dú)的承諾鏈,而只使用一個(gè)刪除產(chǎn)品線然后刪除產(chǎn)品的承諾鏈。


const prodLineGetURL = 'https://myapi.com/ProductLine?select=id';

const prodLineDeleteURL = 'https://myapi.com/ProductLine/';


deleteHelper(prodLineGetURL, prodLineDeleteURL)

  .then(function() {

     const prodGetURL = 'https://myapi.com/Product?select=id';

     const prodDeleteURL = 'https://myapi.com/Product/';

     deleteHelper(prodGetURL, prodDeleteURL);

  })

  .catch(function (error) {

      // handle error

  });

使用async-await語法。


async function delete() {

   try {

     const urls = [

        [ prodLineGetURL, prodLineDeleteURL ],

        [ prodGetURL, prodDeleteURL ]

     ];


     for (const [getURL, deleteURL] of urls) {

        await deleteHelper(getURL, deleteURL); 

     }


   } catch (error) {

     // handle error

   }

}

您可以在代碼中改進(jìn)的另一件事是使用Promise.all而不是forEach()方法來發(fā)出刪除請求,上面的代碼使用Promise.all內(nèi)部deleteHelper函數(shù)。


查看完整回答
反對 回復(fù) 2023-04-27
?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的代碼(以及所有其他答案)正在delete按順序執(zhí)行請求,這是對時(shí)間的巨大浪費(fèi)。Promise.all()您應(yīng)該并行使用和執(zhí)行...


// Delete Product Lines

axios.get('https://myapi.com/ProductLine?select=id')

    .then(function (response) {

        const ids = response.data.value


        // execute all delete requests in parallel

        Promise.all(

          ids.map(id => axios.delete('https://myapi.com/ProductLine/' + id))

        ).then(

          // all delete request are finished

        );        

    })

    .catch(function (error) {


    })


查看完整回答
反對 回復(fù) 2023-04-27
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

所有 HTTP 請求都是異步的,但您可以使其類似同步。如何?使用異步等待


假設(shè)您有一個(gè)名為 的函數(shù)retrieveProducts,您需要?jiǎng)?chuàng)建該函數(shù)async然后await讓響應(yīng)繼續(xù)處理。


留給:


const retrieveProducts = async () => {


// Delete Product Lines

const response = await axios.get('https://myapi.com/ProductLine?select=id')

const ids = response.data.value

ids.forEach(id => {

  axios.delete('https://myapi.com/ProductLine/' + id)

})


// Delete Products (I want to ensure this runs after the above code)

const otherResponse = await axios.get('https://myapi.com/Product?select=id') // use proper var name

const otherIds = response.data.value //same here

otherIds.forEach(id => {

  axios.delete('https://myapi.com/Product/' + id)

})

}

但請記住,它不是同步的,它一直是異步的


查看完整回答
反對 回復(fù) 2023-04-27
  • 3 回答
  • 0 關(guān)注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)