事件驱动编程 - 非线性代码



我在PHP中有以下代码(逻辑):

$fp = fopen('fp.txt', 'w');
    if ($msg == 'say') {
        fwrite($fp, 'Hello world!');
    }
$msg = 'done';

为了将其转换为异步事件驱动的代码,PHP 开发人员 node 的作者建议我像这样重构它。

$fp = fopen('fp.txt', 'w');
if ($msg == 'say') {
    fwrite($fp, 'Hello world!');
    $msg = 'done';
} else {
    $msg = 'done';
}

然后

fs.open('fp.txt', 'w', 0666, function(error, fp) {
    if (msg == 'say') {
        fs.write(fp, 'Hello world!', null, 'utf-8', function() {
        msg = 'done';
    });
    } else {
        msg = 'done';
    }
});

你会清楚地看到,存在代码重复。重复"msg ="done"。这能避免吗?代码重复是不好的做法吧?

事件驱动编程总是这样吗?

像这样:

var done = function() {
    msg = 'done';
};
fs.open('fp.txt', 'w', 0666, function(error, fp) {
    if (msg == 'say') {
        fs.write(fp, 'Hello world!', null, 'utf-8', done);
    } else {
        done();
    }
});

最新更新