在node.js中可以使用Promise
和async/await
,但是在我今天写代码的时候,发现直接使用Promise.resolve
这个api后,await
不能正常返回值,代码大约如下:
const fs = require('fs')
const test = (file) => {
fs.readFile(file, (err, data) => {
if(err) Promise.reject(err)
Promise.resolve(data)
})
}
const result = async function() {
let t = await test('www.xxx.com')
console.log(t)
}
大约如上代码,正常来说应该是能够返回值的,但是这样使用并不能等待,而是直接异步执行。
不知是什么原因,使用new Promise()
就好使了:
const test = (file) => {
return new Promise((resolve, reject) => {
......
......
if(err) return reject(err)
return resolve(data)
})
}
使用如上写法,程序能够正常执行,await
里面能够得到异步的返回值。