Я знаю, что когда мы используем обещание в JavaScript, мы обычно используем два способа, как показано ниже.
var f1 = () => {
return new Promise( (resolve, reject) => {
resolve(10);
})
}
var f2 = () => {
return Promise.resolve(10)
}
f1().then( data => { console.log(data) }) // 10
f2().then( data => { console.log(data) }) // 10
Но если я использую асинхронную функцию внутри обещания, Promise.resolve теряет значение, как показано ниже.
const fs = require('fs')
var f1 = () => {
return new Promise( (resolve, reject) => {
fs.readFile('data.txt', (err, data) => {
resolve(data);
})
})
}
var f2 = () => {
return Promise.resolve()
.then(() => {
fs.readFile('data.txt', (err, data) => {
//return data --> undefined
//Promise.resolve(data) --> undefined
return Promise.resolve() --> undefined
})
})
}
f1().then( data => { console.log('1,',data) })
f2().then( data => { console.log('2,',data) })
Я думаю, что я неправильно использую Promise.resolve ,,, ИЛИ Promise.resolve не поддерживает асинхронную функцию ... кто-то скажет мне, почему Promose.resolve не работает ..