Promiseの対象を深く理解する


プロミスの初級用法
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')
})()