首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小程序不同页面的异步回调,callback和promise的使用讲解

最近好多同学问我如何在请求数据成功后直接使用数据。我们通常的做法就是在请求成功后,再调用我们定义的方法,进而使用数据。...然后在首页index.js里要使用这些数据,那么我们这么写就有问题了。下面就来教大家两种方式来很好的解决这个问题。 一,通过callback回调。 先看下代码,然后我再具体给大家讲解下原理。...我们上图的callback参数,其实就是下图 function(result){} ? 把function方法作为一个参数传递进去的目的,就是为了下面的回调。 ?...怎么实现的呢 1,在app.js里把数据请求封装到promise里,然后把promise返回到我们的首页index.js里 2,在首页里使用这个promise 实现数据的获取和使用。...好了,到这里我们两种不同页面的异步回调就给大家讲完了。

1.5K32

如何序列化Js中的并发操作:回调,承诺和异步等待

这种方法在概念上可能是最纯粹的,但它也可能导致所谓的回调地狱(至于怎么避免它可以戳回调地狱链接):一种意大利式面条代码,难以理解和调试 另一种方法是使用承诺(promise),这允许以更程序化的方式指定操作序列...中的并发操作:回调,承诺和异步等待\js>node unserialized. js Started async "Install OS:安装操作系统"......JavaScript中的并发操作:回调,承诺和异步等待\js>node callback.js Started async "Install OS:安装操作系统"......承诺有一个方法,然后可以提供一个回调作为参数。当我们触发解析函数时,它会运行我们提供给promise的then方法的回调函数 这使我们能够序列化我们的异步操作。...我认为这看起来比纯回调示例更直接 使用异步/等待 Aync / Await是我们要看的最后一个例子。

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    webpack代码分离 ensure 看了还不懂,你打我

    其实说白了,它就是把js模块给独立导出一个.js文件的,然后使用这个模块的时候,webpack会构造script dom元素,由浏览器发起异步请求这个js文件。...我们细想,百度地图是用户点击了才弹出来的,也就是说,这个功能是可选的。那么解决方案就来了,能不能在用户点击的时候,我在去下载百度地图的js.当然可以。那如何实现用户点击的时候再去下载百度地图的js呢?...require.ensure这个函数是一个代码分离的分割线,表示 回调里面的require 是我们想要进行分割出去的,即require(’....,所以ensure的第一个参数[]是它依赖的异步模块,但是这里需要注意的是,webpack会把参数里面的依赖异步模块和当前的需要分离出去的异步模块给一起打包成同一个js文件,这里可能会出现一个重复打包的问题...就是 require.ensure() 第二个函数参数,即回调函数,它表示当下载js完成后,发生的逻辑。 webpack打包后,形成 ?

    69441

    【干货】2017年值得关注的JavaScript框架与主题

    Callbacks: 回调是JavaScript异步编程的基本概念,某个回调函数会在某个异步操作结束后被调用,就好比领导对你说:好好干你的工作,做好了跟我汇报下。...Generators & async/await: 个人观点,最好的异步代码的写法就是用写同步代码的方式去写异步代码。不可否认这些都存在学习曲线,不过磨刀不误砍柴工。...Webpack: 最著名的模块打包工具之一,有不少优秀的模板配置奥,譬如Webpack2-React-Redux-Boilerplate。...这种单向数据流与当时以Angular 1 / Knockout为代表的双向数据绑定形成对比,双向数据绑定中如果发现绑定的数据发生变化则会立刻触发重渲染,而无论当前是否处于渲染流程中,这一点也就导致了Reflows...首先,我会去Google Trends中查看各个框架关联关键词的被搜索情况。 来源:中国物联网

    1.3K60

    Webpack 插件架构深度讲解

    本文将围绕 Tapable 展开,深入讲解 Tapable 的钩子类型、特点、分别以什么逻辑处理回调,在此基础上进一步推导出 什么是插件 从形态上看,插件通常是一个带有 apply 函数的类: class...调用发布接口触发回调 sleep.call(); // 运行结果: // callback A 示例中使用 tap 注册回调,使用 call 触发回调,在某些钩子中还可以使用异步风格的 tapAsync...仅出现 1 次:Compiler.hooks.make AsyncParallelBailHook 异步并行熔断钩子 Webpack 中未使用 AsyncSeriesHook 异步串行钩子 Webpack...异步钩子 前面说的 Sync 开头的都是同步风格的钩子,优点是执行顺序相对简单,回调之前依次执行,缺点是不能在回调中执行异步操作。...: 支持异步风格 并行执行回调队列,不需要做任何等待 与 SyncHook 一样,不关心回调的执行结果 其它 部分钩子类型在 tapable 定义,但在 webpack 中并没有用例,大致理解作用即可:

    1.7K20

    React项目前端开发总结

    . callback:回调函数,该函数调用时会传一个require参数,可以进一步的require其他模块. chunkName:模块名,用于构建时生成文件时命名使用. require.ensure的模块只会被下载下来...,不会被执行,只有在回调函数使用require(模块名)后,这个模块才会被执行. require(‘....即为store里的数据. return时如果要返回异步数据,可以通过redux-thunk和redux-saga这两个中间件来实现,这样就可以以action中发起异步请求了. 8....在请求数据完成后,setState的回调方法里调用声明的方法 ? 实现滚动加载 ? 实现效果如下: ? 9. 表格插件Echarts使用 引入Echarts插件 ?...'gmap', //Google地图 'insertvideo', //视频 'help', //帮助 'justifyleft', //居左对齐 'justifyright', //居右对齐 'justifycenter

    1.6K20

    玩转Webpack共需几步?

    注意上面所说的返回空,仅指undefined,不包含null、''等。 另外,Tapable的钩子又可按照同步和异步分为以下类型: Sync。同步钩子,只能用hook.tap()注册回调。...异步钩子并行执行,注册回调的方式同AsyncSeries。 上述两种分类的组合就是Tapable钩子真正的类型,体现在其暴露出的钩子名称上。...比如AsyncSeriesWaterfallHook,就是Waterfall和AsyncSeries的结合,其允许异步回调并依次执行,并且前一个回调的返回值回传入下一个回调的参数中。...AsyncSeriesWaterfallHook中上一个注册的异步回调执行之后的返回值会传递给下一个注册的回调。...Webpack和Rollup打包原理大同小异,理解其打包原理有利于更好的使用这些工具。

    47330

    揭秘webpack插件工作流程和原理

    想要了解 webpack 的插件的机制,需要弄明白以下几个知识点: 一个简单的插件的构成 webpack构建流程 Tapable是如何把各个插件串联到一起的 compiler以及compilation对象的使用以及它们对应的事件钩子...('HelloPlugin', (compilation) => { // 在功能流程完成后可以调用 webpack 提供的回调函数; }); // 如果事件是异步的,会带两个参数...,第二个参数为回调函数,在插件处理完任务时需要调用回调函数通知webpack,才会进入下一个处理流程。...}) tapAsync 异步钩子,通过callback回调告诉Webpack异步执行完毕tapPromise 异步钩子,返回一个Promise告诉Webpack异步执行完毕 compiler.hooks.run.tapAsync...Compilation 对象也提供了插件需要自定义功能的回调,以供插件做自定义处理时选择使用拓展。 简单来说,Compilation的职责就是构建模块和Chunk,并利用插件优化构建过程。

    1.8K70

    前端插件机制剖析及业界案例分析

    function() { console.log(`${compilationEvenetHook} done.`); }); // 回调...compiler.plugin 的回调可以拿到 complication 对象。...Tapable-webpack 中的事件流机制 webpack 的本质是处理事件流,在编译过程中会依据钩子执行不同的 plugin,如何将 plugin 与钩子对应起来正是 Tapable 要干的事,核心原理是发布订阅模式...tap/call 挂载和同步执行,Tapable 提供了同步和异步钩子,也会有对应的方法来进行挂载和执行: 同步 异步 绑定 tap tapAsync/tapPromise 执行 call callAsync...compiler 对象在 WebPack 构建过程中代表着整个 WebPack 环境,包含上下文、项目配置信息、执行、监听、统计等等一系列的信息,提供给 loader 和插件使用;compiler 对象在编译过程只会在初始化的时候创建一次

    71710

    Webpack编写自定义插件

    Webpack 提供的三种触发钩子方法 (在 compiler.hooks 下指定事件钩子函数,便会触发钩子时,执行回调函数): tap :以同步方式触发钩子; tapAsync :以异步方式触发钩子;...tap 同步钩子 tapAsync 异步钩子,通过callback回调告诉Webpack异步执行完毕 tapPromise 异步钩子,返回一个Promise告诉Webpack异步执行完毕 tap tap...,和tapAsync的区别在于tapPromise是通过返回Promise来告知Webpack异步逻辑执行完毕。...插件编写实例 接下来我们开始编写自定义插件,所有插件使用的示例项目如下(需要安装webpack和webpack-cli): |----src |----main.js |----plugins...apply 方法可以接收一个 Webpack compiler对象的引用,从而可以在回调函数中访问到 compiler 对象。

    1.2K20

    基于位置的实时游戏MapAttack的技术实现

    这里我将向大家表述我们如何利用Socket.io、Redis、Node.js以及一路上我们所学的东西来规划、开发并测试一款实时的、基于位置的游戏。...Geofence在这里指地图上带有数字的小圆圈,玩家进入这些小圆圈后,就会得到与圆圈中所标记数字相同的分数,它所在小组的总分数也会相应增加,同时圆圈的颜色会变成该玩家小组的颜色。...我们的Node.js服务器接收手机通过一个类似Google’s Protocol Buffers的顾客协议发来的更新,实际上就是压缩的二进制的JSON。...由于它内部使用Fibers处理堵塞的IO,所以没有回调的需要。这意味着我们可以像写一个正常的Sinatra网络应用那样进行开发。...Sinatra::Synchrony允许我们做异步程序,除了那些在Fibers中封装了回调操作的。这让我们能够实现同步程序的同时利用异步代码的优势。

    1.6K20

    详解JavaScript错误捕获和上报流程

    Q1: 同步可以try-catch,但一个异步回调,比如setTimeOut里的函数还可以try-catch吗? Q2: Promise的错误捕获怎么做?...普通的异步回调里的错误捕获方式(Promise时代以前) 上面的问题来了,我们还能通过直接的try-catch在异步回调外部捕获错误吗?...我们试一试 // 尝试在异步回调外部捕获错误的结果 function test2 () { try { setTimeout (function () { throw Error...console.log ('test2_1:catch err successfully'); } }); } test2_1(); 输出结果如下,告诉我们这方法可行 总结下Promise时代以前,异步回调中捕获和处理错误的方法...在异步回调内部编写try-catch去捕获和处理,不要在外部哦 很多异步操作会开放error事件,我们根据事件去操作就可以了 Q3.

    1.2K20

    你必须知道的webpack插件原理分析 「详细介绍」

    apply 函数中需要有通过 compiler 对象挂载的 webpack 事件钩子,钩子的回调中能拿到当前编译的 compilation 对象,如果是异步编译插件的话可以拿到回调 callback。...完成自定义子编译流程并处理 complition 对象的内部数据。 如果异步编译插件的话,数据处理完成后执行 callback 回调。...('HelloPlugin', (compilation) => { // 在功能流程完成后可以调用 webpack 提供的回调函数; }) // 如果事件是异步的,会带两个参数...tapAsync:回调方式注册异步钩子。 tapPromise:Promise 方式注册异步钩子。...Compilation 对象也提供了插件需要自定义功能的回调,以供插件做自定义处理时选择使用拓展。 简单来说,Compilation 的职责就是构建模块和 Chunk,并利用插件优化构建过程。

    1.3K20

    webpack 插件机制分析及开发调试

    apply 函数中需要有通过 compiler 对象挂载的 webpack 事件钩子,钩子的回调中能拿到当前编译的 compilation 对象,如果是异步编译插件的话可以拿到回调 callback。...完成自定义子编译流程并处理 complition 对象的内部数据。 如果异步编译插件的话,数据处理完成后执行 callback 回调。...一个 compilation 对象包含了 当前的模块资源、编译生成资源、变化的文件、以及 被跟踪依赖的状态信息。编译对象也提供了很多关键点回调供插件做自定义处理时选择使用。...它类似于 NodeJS 的 EventEmitter 类,专注于自定义事件的触发和操作。除此之外, Tapable 允许你通过回调函数的参数访问事件的生产者。 简单来说,就是我们熟悉的发布-订阅模式。...stage: options.stage || 0 }; if(options.async) // 将插件中异步钩子的回调函数注入

    1.7K30
    领券