Promise 异步函数的加上外壳终止Promise

//promise异步函数的请求终止
export default function markCancleble(promise){
	let hasCanceled_ = false ;
	const wrappedPromise = new Promise((resolve,reject)=>{
		// 传递过来的promise
		promise.then((val)=>{
			hasCanceled_?reject({isCanceled:true}):resolve(val)
		})
		promise.catch((err)=>{
			hasCanceled_?reject({isCanceled:true}):resolve(err)
		})
		return {
			promise:wrappedPromise,
			cancle(){
				hasCanceled_=true
			}
		}
	})
}

//useful 挂载到this中
this.cancleble =  markCancleble (fetch())
this.cancleble.promise
				.then()
				.catch()
				///
			//取消
			this.cancleble.cancle()

原文地址:https://www.cnblogs.com/allenxieyusheng/p/8985210.html

时间: 2024-09-25 11:27:07

Promise 异步函数的加上外壳终止Promise的相关文章

Node.js用ES6原生Promise对异步函数进行封装

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.转载请注明来源http://blog.csdn.net/azureternite 目录(?)[+] Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初始状态,即等待操作的执行 fulfilled:成功的操作 rejected:失败的操作 pending的状态

js callback promise async await 几种异步函数处理方式

***callback  这个是最常用的也是最简单的 ,比如在ajax网络请求中,返回请求完成返回的数据 回调函数就是把一个函数当成另一个函数的参数,可以传递函数内的局部变量,也可以异步完成一些操作,在函数的实现里调用回调函数,在函数的调用里实现回调函数 // 回調函數的方式 閉包 可以獲取函數內部的局部變量 function testCallback(callback) { let a = 1; let b = 2; if (a < b) { callback && callbac

详解如何构建Promise队列实现异步函数顺序执行

场景 有a.b.c三个异步任务,要求必须先执行a,再执行b,最后执行c 且下一次任务必须要拿到上一次任务执行的结果,才能做操作 思路 我们需要实现一个队列,将这些异步函数添加进队列并且管理它们的执行,队列具有First In First Out的特性,也就是先添加进去的会被先执行,接着才会执行下一个(注意跟栈作区别) 大家也可以类比一下jQuery的animate方法,添加多个动画也会按顺序执行 解决 模拟3个异步函数 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Koa异步处理Async 、Await和Promise 的使用

async 是“异步”的简写,而 await 可以认为是 async wait 的简写.所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成. 简单理解: async 是让方法变成异步. 在终端里用 node 执行这段代码,你会发现输出了 Promise {‘Hello async’ },这时候会发现它返回的是 Promise. async function testAsync(){ return 'Hello async'; }

ES6学习笔记五:Promise异步任务

一:Promise对象 Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败). 二:创建与使用 var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } }); Promise构造函数接受一个

获取JavaScript异步函数的返回值

今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script> function getSomething() {  var r = 0;  setTimeout(function() {  r = 2;  }, 10);  return r; } function compute() {  var x = getSomething();  alert

ES2017异步函数现已正式可用

ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数.如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的. 异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks.generators 或 promise 中包含你的逻辑. 如下代码: function logger() {     let data = fetch('http://sampleapi.com/posts')     console.

TypeScript之异步函数

必须搞清楚 setTimeout 为异步函数.因为 : TS中没有线程休眠 , 所以我提供了如下测试方式 一 : 正常 module demo{ export class AsyncDemo{ private _sentry : number = 0; public start() : void{ this.getSomething("Aonaufly").then( $value=>{ egret.log(`执行成功 ! name : ${$value}`); }, $erro

Promise之你看得懂的Promise

本文由作者陈旭锋(任职网易考拉)授权网易云社区发布. Promise源码详解 学习知识要善于思考,思考,再思考. -- 爱因斯坦 1.回调地狱 曾几何时,我们的代码是这样的,为了拿到回调的结果,不得不callback hell,这种环环相扣的代码可以说是相当恶心了 let fs = require('fs') fs.readFile('./a.txt','utf8',function(err,data){   fs.readFile(data,'utf8',function(err,data){