Blockchain
ethers.js 等待函式在第一個函式工作後執行
我正在使用兩個契約。合約 B 具有從使用者那裡接收 100 個 Dai 代幣的功能,但為此它需要具有該 Dai 代幣的 Dai 合約(合約 A)的 increaseAllowance()。
然後我使用 ethers 在 reactjs 中創建以下函式。它的作用是,它從前兩行的兩個合約中獲取 abi,然後使用 await 呼叫 increaseAllowance() 函式,一旦它獲得津貼,它應該轉到下一行並呼叫函式發送應用程序()。所以簡單來說,它應該首先呼叫區塊鏈上的 increaseAllowance(),然後呼叫 sendApplication()。因為它會增加津貼並且發送應用程序功能會在它之後工作,但它所做的是它同時呼叫這兩個函式並且因為還沒有津貼所以 sendApplication 函式失敗並給出津貼錯誤,所以我希望它在區塊鏈上排隊並在呼叫 increaseAllowance() 函式後執行
const sendApplication = async () => { try { if(!ethereum) return alert("Please install MetaMask."); const contractDai = await getDAIContract(); //Dai Contract abi const contract = await getEtherContract(); //2nd Contract abi const increaseAllowance = await contractDai.increaseAllowance('2nd_contract_address', 100); const sendApplication = await contract.sendApplication(100); } catch (error) { console.log("error : ", error); } }
兩者都
increaseAllowance
修改sendApplication
狀態,因此它將向乙太坊進行交易。你需要等待交易被探勘。const increaseAllowanceTx = await contractDai.increaseAllowance('2nd_contract_address', 100); await increaseAllowanceTx.wait(); const sendApplicationTx = await contract.sendApplication(100); await sendApplicationTx.wait();