a能拿b,b能拿到c,c能拿到d,实现a拿到d的东西。 function a() { b(function (data) { console.log(data); }); } function b(cb) { c(function (data) { cb(data); }); } function c(cb) { d(function (data) { cb(data); }); } function d(cb) { setTimeout(() => { let data = “彩虹”; cb(data); }, 3000); } 在ES7中更有趣的代码如下: async function D() { return await new Promise((resolve) => { setTimeout(() => { let data = “彩虹”; resolve(data); }, 3000); }) } // await只能使用在异步函数中,用来等待一个promise操作的promiseValue async function C() { return await D(); } async function A() { console.log(await C()); } A();