【发布时间】:2019-08-17 01:20:00
【问题描述】:
为了更好地理解 Promise 语法,我正在尝试将以下伪代码转换为现代 JavaScript。
这是旧代码,带有臭名昭著的回调地狱:
1995 JavaScript
var floppy = require( 'floppy' );
floppy.load( 'disk1', function( data1 ) {
floppy.prompt( ' Please insert disk 2', function() {
floppy.load( 'disk2', function( data2 ) {
floppy.prompt( ' Please insert disk 3', function() {
floppy.load( 'disk3', function( data3 ) {
floppy.prompt( 'Please insert disk 4', function() {
// If Node.js would've existed in 1995.
} );
} );
} );
} );
} );
} );
请帮我用 Promise 语法(无 async/await)将上面的内容转换成 JavaScript。我是 Promise 新手,但这就是我想出的。语法、嵌套和功能是否与上述代码相同?如果没有,请帮助我使用 Promises 将疯狂的回调转换为漂亮的 JavaScript。
更新代码
const floppy = require( 'floppy' );
floppy.load( 'disk1' )
.then( data1 => {
floppy.prompt( 'Please insert disk 2' );
} )
.then(
floppy.load( 'disk2' )
)
.then( data2 => {
floppy.prompt( 'Please insert disk 3' );
} )
.then(
floppy.load( 'disk3' )
)
.then( data3 => {
floppy.prompt( 'Please insert disk 4' );
} )
.then(
// Node.js using Promises avoids callback hell!
);
【问题讨论】:
-
你可以在 1995 年实现 Promise。这只是一种设计模式。无需修改语言即可实现承诺
标签: javascript node.js promise callback