Promiseの対象を深く理解する
3356 ワード
プロミスの初級用法
高次関数を包装して、異歩関数にパラメーターを伝えることができます.
const testPath = path.join(__dirname, 'test.txt')
const readFileAsync = new Promise((resolve, reject) => {
const data = readFile(testPath, 'utf8', (data, err) => {
if (data) resolve(data)
else reject(err)
})
})
readFileAsync.then((data) => {
console.log(data)
}, (err) => {
console.log(err)
})
このコードの中でreadFileAsync.then()は直ちに実行されます.高次関数を包装して、異歩関数にパラメーターを伝えることができます.
const testPath = path.join(__dirname, 'test.txt')
const readFileAsync = (path) => {
return new Promise((resolve, reject) => {
readFile(path, 'utf8', (data, err) => {
if (data) resolve(data)
else reject(err)
})
})
}
readFileAsync(testPath).then((data) => {
console.log(data)
}, (err) => {
console.log(err)
})
async-await関数で使用します.;(async () => {
try {
const data = await readFileAsync(testPath)
console.log(data)
} catch (err) {
console.log(err)
}
})()
set Timeout遅延実行const sleep = (time) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, time)
})
}
sleep(2000).then(()=>{console.log(' ');})
//
;(async () => {
await sleep(2000)
console.log('run in 2s')
})()