在 Node.js 中,異步操作通常通過回調函數、Promise 對象或 async/await 來處理。以下是一些處理異步操作的方法:
// 使用回調函數處理異步操作
function doAsyncTask(callback) {
setTimeout(() => {
callback(null, 'Task completed');
}, 1000);
}
doAsyncTask((err, result) => {
if (err) {
console.error(err);
} else {
console.log(result);
}
});
// 使用 Promise 處理異步操作
function doAsyncTask() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Task completed');
}, 1000);
});
}
doAsyncTask()
.then(result => {
console.log(result);
})
.catch(err => {
console.error(err);
});
// 使用 async/await 處理異步操作
function doAsyncTask() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Task completed');
}, 1000);
});
}
async function main() {
try {
const result = await doAsyncTask();
console.log(result);
} catch (err) {
console.error(err);
}
}
main();
在 PHP 中,可以使用回調函數、Promise 對象(通過第三方庫如ReactPHP)或 Generator 函數(通過 yield 關鍵字)來處理異步操作。以下是一個使用 Generator 函數處理異步操作的示例:
<?php
// 使用 Generator 函數處理異步操作
function doAsyncTask() {
yield sleep(1); // 模擬異步操作
return 'Task completed';
}
function sleep($seconds) {
$start = time();
while (time() - $start < $seconds) {
yield;
}
}
$task = doAsyncTask();
$result = $task->current();
$task->next();
echo $result;
需要注意的是,PHP 原生不支持 Promise 對象或 async/await,但可以使用第三方庫如ReactPHP來實現類似的功能。