我有一個理論,這是因為我使用的暫停方法只暫停異步函數,但不能完全確定這是否正確。 的確。您還需要將mergeSort函數標記為async,這樣您就可以awaitmerge()以及兩個遞歸的mergeSort()調用。 async function mergeSort(unsortedArray, aux = [...unsortedArray], lowIndex = 0, highIndex = unsortedArray.length - 1) { /*^^^^^ */ if (highIndex === lowIndex) return; const midIndex = Math.floor((highIndex + lowIndex) / 2); await mergeSort(unsortedArray, aux, lowIndex, midIndex);//^^^^^ await mergeSort(unsortedArray, aux, midIndex + 1, highIndex);//^^^^^ await merge(unsortedArray, aux, lowIndex, midIndex, highIndex);//^^^^^}