Nodejsでクラスを作成しました
class ApnService {
sendNotification(deviceType, deviceToken, msg, type, id) {
try {
const note = await apnProvider.send(note, deviceToken)
console.log(note)
} catch (err) {
console.log(err)
}
}
}
export default ApnService
上記の関数をasync
に変換する必要があります。しかし、以下の構文を使用すると、エラーがスローされます
SyntaxError: src/services/apn.js: Unexpected token (43:19)
41 | }
42 |
> 43 | sendNotification = async(deviceType, deviceToken, msg, type, id) => {
|
^
以下は構文です
class ApnService {
sendNotification = async(deviceType, deviceToken, msg, type, id) => {
try {
const note = await apnProvider.send(note, deviceToken)
console.log(note)
} catch (err) {
console.log(err)
}
}
}
export default ApnService
関数名の前にasyncを追加するだけで、その関数を非同期として宣言できます。
class ApnService {
async sendNotification(deviceType, deviceToken, msg, type, id) {
try {
const note = await apnProvider.send(note, deviceToken)
console.log(note)
} catch (err) {
console.log(err)
}
}
}
export default ApnService
async
は、非同期関数を指定するためのキーワードです。
class ApnService {
async sendNotification(deviceType, deviceToken, msg, type, id) {
try {
const note = await apnProvider.send(note, deviceToken)
console.log(note)
} catch (err) {
console.log(err)
}
}
}
export default ApnService;
class Foo {
x = something
}
この割り当ては、クラスフィールドの例です。 クラスプロパティ/クラスフィールド 構文の使用は現在TC39プロセスのステージ3にあります。つまり、ECMAScriptではまだ使用されておらず、すべてのJSエンジンでネイティブにサポートされていません。 Babel のようなトランスパイラーを介して使用できますが、そのようなトランスパイラーを自分で構成して実行する場合のみです。
幸いにも、クラスメソッドを非同期にするためにクラスフィールド構文は必要ありません。async
キーワードを使用するだけで済みます。
class Foo {
async myMethod () {/* ... */}
}