[英]Catch without try in JavaScript and promise
我在看下面的代碼塊。 我試圖了解沒有javascript中的try塊怎么會有一個陷阱。 我知道使用了一個Promise,但是create數據庫在Promise之內,我的理解是我們應該在try.block周圍有一個client.queryAsync。
下面的代碼工作正常,我試圖理解沒有try塊的工作方式。 我還閱讀了http://know.cujojs.com/tutorials/async/mastering-async-error-handling-with-promises,但該鏈接還顯示了正在使用的try塊。
誰能解釋一下。 提前致謝
function init(dbName) {
return util.serialize('Open database', function () {
return connect(maintenanceDbName).then(function (client) {
return client.queryAsync('CREATE DATABASE ' + dbName + ' TEMPLATE=template0 ENCODING=\'UTF8\' LC_COLLATE=\'C\' LC_CTYPE=\'C\';').catch(function (err) {
// Already created previously, which is fine
if (err.message.indexOf('already exists') < 0) {
throw err;
}
}).finally(function () {
return closeDatabase(client);
});
}).then(function () {
return connect(dbName);
}).then(function (client) {
db = client;
return fs.readFileAsync(path.join(__dirname, 'postgresql.sql'), 'utf8').then(db.queryAsync.bind(db));
});
});
}
找到答案后,這里使用的catch
不是關鍵字,它是.catch
包裝函數,可用於捕獲.then
塊內發生的任何異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.